Cómo instalar y configurar Ansible en Ubuntu 20.04 LTS

1 mar 2021 6 min di lettura
Cómo instalar y configurar Ansible en Ubuntu 20.04 LTS
Indice dei contenuti

Introducción

Los sistemas de gestión de la configuración están diseñados para simplificar el proceso de control de grandes cantidades de servidores para administradores y equipos de operaciones. Le permiten controlar muchos sistemas diferentes de forma automatizada desde una ubicación central.

Hay muchas herramientas populares de administración de configuración disponibles para sistemas Linux, como Chef y Puppet, que a menudo son más complejas de lo que muchas personas desean o necesitan. Ansible es una gran alternativa a estas opciones porque ofrece una arquitectura que no requiere la instalación de software especial en los nodos, utilizando SSH para ejecutar tareas de automatización y archivos YAML para definir detalles de aprovisionamiento.

En esta guía, discutiremos cómo instalar Ansible en un servidor Ubuntu 20.04 LTS Focal Fossa.

Prerrequisitos

Para seguir este tutorial, necesitará:

Un nodo de control de Ansible: el nodo de control de Ansible es la máquina que usaremos para conectar y controlar los hosts de Ansible a través de SSH. Su nodo de control de Ansible puede ser su computadora local o un servidor dedicado a ejecutar Ansible, aunque esta guía asume que su nodo de control es un sistema Ubuntu 20.04 LTS. Asegúrese de que el nodo de control tenga:

Uno o más hosts Ansible: un host Ansible es cualquier máquina configurada para la automatización del nodo de control Ansible. Esta guía asume que sus hosts Ansible son servidores remotos Ubuntu 20.04 LTS. Asegúrese de que cada host de Ansible tenga:

Instalar Ansible

Para comenzar a usar Ansible como un medio de administrar la infraestructura de su servidor, debe instalar el software Ansible en la máquina que actuará como el nodo de control de Ansible. Para esto usaremos los repositorios predeterminados de Ubuntu.

Primero, actualice el índice de paquetes de su sistema con:

sudo apt update

Después de esta actualización, puede instalar el software Ansible con:

sudo apt install ansible

Presione Y cuando se le solicite para confirmar la instalación.

Su nodo de control Ansible ahora tiene todo el software que necesita para administrar sus hosts. A continuación, veremos cómo configurar un archivo de inventario para que Ansible pueda comunicarse con sus nodos administrados.

Configurar el archivo de inventario

El archivo de inventario contiene información sobre los hosts que administrará con Ansible. Se pueden incluir desde uno a varios cientos de servidores en el archivo de inventario, y los hosts se pueden organizar en grupos y subgrupos. El archivo de inventario también se usa a menudo para establecer variables que solo serán válidas para hosts o grupos específicos, a fin de que se usen dentro de los libros de jugadas y modelos. Algunas variables también pueden afectar la forma en que se ejecuta un libro de jugadas, como la ansible_python_interpreter que veremos en un momento.

Para cambiar el contenido de su inventario Ansible predeterminado, abra el /etc/ansible/hosts usando su editor de texto preferido, en el nodo de control Ansible:

sudo nano /etc/ansible/hosts
Notaetc/ansible/hosts-i

El archivo de inventario predeterminado proporcionado por la instalación de Ansible contiene una serie de ejemplos que puede utilizar como referencias para configurar su inventario. El siguiente ejemplo define un grupo llamado [servers] con tres servidores diferentes, cada uno identificado por un alias personalizado: servidor1, servidor2 y servidor3. Asegúrese de reemplazar las IP resaltadas con las direcciones IP de sus hosts Ansible.

[servers]
 server1 ansible_host=111.0.223.333
 server2 ansible_host=111.0.223.444
 server3 ansible_host=111.0.223.555

 [all:vars]
 ansible_python_interpreter=/usr/bin/python3
/etc /ansible /hosts

El all:vars establece el ansible_python_interpreter que será válido para todos los hosts incluidos en este inventario. Este parámetro asegura que el servidor remoto use el /usr/bin/python3 Python 3 en /usr/bin/python (Python 2.7), que no está presente en las versiones recientes de Ubuntu.

Cuando termine, guarde y cierre el archivo presionando CTRL+X luego Y y ENTER para confirmar los cambios.

Cuando desee verificar su inventario, puede hacer:

ansible-inventory --list -y

Verá una salida similar a esta, pero que contiene la infraestructura de su servidor como se define en su archivo de inventario:

all:
 children:
 servers:
 hosts:
 server1:
 ansible_host: 203.0.113.111
 ansible_python_interpreter: /usr/bin/python3
 server2:
 ansible_host: 203.0.113.112
 ansible_python_interpreter: /usr/bin/python3
 server3:
 ansible_host: 203.0.113.113
 ansible_python_interpreter: /usr/bin/python3
 ungrouped: {}

Ahora que ha configurado su archivo de inventario, tiene todo lo que necesita para probar la conexión a sus hosts Ansible.

Prueba de conexión

Una vez que haya configurado su archivo de inventario para incluir servidores, es hora de verificar si Ansible puede conectarse a estos servidores y ejecutar comandos a través de SSH.

Para esta guía, usaremos la cuenta raíz de Ubuntu porque normalmente es la única cuenta disponible de forma predeterminada en los servidores recién creados. Si sus hosts de Ansible ya han creado un usuario sudo regular, se le recomienda que utilice esa cuenta en su lugar.

Puede utilizar el -u para especificar el usuario del sistema remoto. Si no se proporciona, Ansible intentará iniciar sesión como el usuario actual del sistema en el nodo de control.

Desde la computadora local o el nodo de control de Ansible, ejecute:

ansible all -m ping -u root

Este comando utilizará el módulo de ping para realizar una prueba de conectividad en todos los nodos del inventario predeterminado, que se conectan como raíz. El módulo de ping

  • si los hosts son accesibles;
  • si tiene credenciales SSH válidas;
  • si los hosts pueden ejecutar módulos Ansible usando Python.

Debería obtener una salida similar a esta:

server1 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }
 server2 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }
 server3 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }

Si es la primera vez que se conecta a estos servidores a través de SSH, se le pedirá que confirme la autenticidad de los hosts a los que se está conectando a través de Ansible. Cuando se le solicite, escriba yes y luego presione ENTER para confirmar.

Cuando recibe una "pong" de un host, significa que está listo para ejecutar comandos y libros de jugadas de Ansible en ese servidor.

Ejecutar comandos Ad-Hoc (opcional)

Después de verificar que su nodo de control de Ansible puede comunicarse con sus hosts, puede comenzar a ejecutar comandos ad hoc y libros de jugadas en sus servidores.

Cualquier comando que normalmente ejecutaría en un servidor remoto a través de SSH se puede ejecutar con Ansible en los servidores especificados en su archivo de inventario. Por ejemplo, puede verificar el uso del disco en todos los servidores con:

ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
 Filesystem Size Used Avail Use% Mounted on
 udev 3.9G 0 3.9G 0% /dev
 tmpfs 798M 624K 798M 1% /run
 /dev/vda1 155G 2.3G 153G 2% /tmpfs 3.9G 0 3.9G 0% /dev/shm
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
 /dev/vda15 105M 3.6M 101M 4% /boot/efi
 tmpfs 798M 0 798M 0% /run/user/0

 server2 | CHANGED | rc=0 >>
 Filesystem Size Used Avail Use% Mounted on
 udev 2.0G 0 2.0G 0% /dev
 tmpfs 395M 608K 394M 1% /run
 /dev/vda1 78G 2.2G 76G 3% /tmpfs 2.0G 0 2.0G 0% /dev/shm
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
 /dev/vda15 105M 3.6M 101M 4% /boot/efi
 tmpfs 395M 0 395M 0% /run/user/0...

El df -h puede ser reemplazado por cualquier comando que desee.

También puede ejecutar módulos Ansible a través de comandos ad-hoc, similar a lo que hizo anteriormente con el ping para probar la conexión. Por ejemplo, así es como podemos usar el apt para instalar la última versión de vim en todos los servidores de su inventario:

ansible all -m apt -a "name=vim state=latest" -u root

También puede apuntar a hosts individuales, así como a grupos y subgrupos, al ejecutar comandos de Ansible. Por ejemplo, para usar el uptime de cada host en el servers, ejecute este comando:

ansible servers -a "uptime" -u root

Podemos especificar varios hosts separándolos con dos puntos:

ansible server1:server2 -m ping -u root

Conclusión

En esta guía, ha instalado Ansible y configurado un archivo de inventario para ejecutar comandos ad-hoc desde un nodo de control de Ansible.

Después de verificar que puede conectar y controlar su infraestructura desde una máquina controladora central de Ansible, puede ejecutar cualquier comando o libro de jugadas que desee en esos hosts.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.