Primeros pasos con Ansible

En este post voy a documentar los primeros pasos con Ansible. Tratamos la configuración de archivo hosts y como ejecutar comandos básicos, con ejemplos y explicaciones para tener de referencia futuro. La idea es armar una especie de navaja suiza que permita a la gente de IT poder desempeñar sus tareas de una forma más fácil, segura y reproducible.

Me baso en una instalación de Ansible como la que documenté en este post.

Descargo: No pretendo reemplazar la documentación oficial de Ansible.

Los requerimientos previos:

Impersonar el usuario «ansible»:

En la instalación por defecto que documente, el usuario ansible es el que tiene configurado los accesos a los nodos. El comando para que un usuario del grupo sudo pueda convertirse en ansible:

sudo su - ansible

El archivo hosts de ansible:

El archivo «/etc/ansible/hosts» contiene la definición de equipos donde Ansible puede impactar.

En mi caso separe a los equipos de mi casa en 4 grupos.

  • servidores #Servidores x86-64 físicos o virtuales (tengo un solo equipo que prendo sobre demanda).
  • rbpi3 #Raspbierries PI 3.
  • rbpi4 #Raspberries PI 4.
  • rbpiz #Raspberries PI Zero W.

En el grupo rpiz use un comodín, las dos PIZW que tengo tienen el mismo sistema operativo utilicé el comodín que permite crear series de equipos, por dos no tiene mucha utilidad pero me pareció piola mostrarlo.

La rbpi3-001 es mi servidor Ansible, así que defino la conexión como local (no ejecuta a través del ssh).

En los equipos Debian-Rasbian 10 / Ubuntu 18.04 que tengo para que especificar la ruta de Python3 para que no tire alertas de que el interprete detectado es un link simbólico.

[servidores]
   alphaprime.sismonda.local   ansible_python_interpreter=/usr/bin/python3

[rbpi3]
   rbpi3-001.sismonda.local   ansible_connection=local ansible_python_interpreter=/usr/bin/python3 
   rbpi3-002.sismonda.local

[rbpi4]
   rbpi4-001.sismonda.local
   rbpi4-002.sismonda.local   ansible_python_interpreter=/usr/bin/python3
   rbpi4-003.sismonda.local

[rbpiz]
   rbpiz-[001:002].sismonda.local   ansible_python_interpreter=/usr/bin/python3

Primeros pasos con Ansible:

Ejecutar comando en un servidor o grupo:

En ese ejemplo voy a ejecutar el comando date en el grupo rbpiz definido en mi archivo «/etc/ansible/hosts»

ansible rbpi3-002.sismonda.local -a "free"
Captura de pantalla de ejecución remota con Ansible, del comando free en el equipo rbpi3-002.sismonda.local

El primer ejemplo ejecuto el comando date en todos los servidores del grupo rbpiz

ansible rbpi4 -a "lsb_release -rci"
Obtención de datos de equipos del grupo rbpi4

Comandos de referencia:

A continuación voy a listar comandos que se utilizan rutinaria.

Para saber como reconoce ansible la distribución de cada equipo. Se utiliza para aplicar filtros.

ansible all -m setup -a "filter=ansible_distribution*" 
Salida de la ejecución de ansible all -m setup -a «filter=ansible_distribution*»

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.