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"
El primer ejemplo ejecuto el comando date en todos los servidores del grupo rbpiz
ansible rbpi4 -a "lsb_release -rci"
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*"