Ansible es una excelente manera de implementar cambios en masa en varias máquinas. Por ejemplo, lo he usado para hacer una configuración básica en una máquina nueva y para actualizar varios hosts simultáneamente. También es importante tener en cuenta que Ansible no solo se usa en entornos de laboratorio doméstico, sino que también es muy popular en entornos corporativos, lo que lo convierte en una habilidad muy valiosa.
Ansible es una excelente manera de implementar cambios en masa en varias máquinas. Por ejemplo, lo he usado para hacer una configuración básica en una máquina nueva y para actualizar varios hosts simultáneamente. También es importante tener en cuenta que Ansible no solo se usa en entornos de laboratorio doméstico, sino que también es muy popular en entornos corporativos, lo que lo convierte en una habilidad muy valiosa.
Configuración de Ansible en una nueva máquina
Primero, necesitamos instalar el paquete `ansible`, debería ser tan simple como:
`sudo apt actualizar && sudo apt instalar ansible`
Y necesitamos crear nuestro directorio Ansible para trabajar con:
`mkdir ~/ansible && cd ~/ansible`
Ahora debería estar en el directorio de Ansible en su máquina local.
Descripción general de Ansible
Usamos las dos funciones principales de Ansible, inventarios, que almacenan todos sus hosts, y playbooks, que contienen las "instrucciones" para ejecutar en los hosts. Para que Ansible lea nuestro libro de jugadas y ejecute las acciones, debe saber dónde están los hosts, que es el archivo de inventario. Es solo un "inventario" de todos los hosts.
Ahora que tenemos los libros de jugadas, una vez que Ansible ha leído el inventario y está al tanto de todos los hosts, comienza a buscar qué hacer. Ese es el libro de jugadas, que es solo un archivo YAML simple, que utiliza "módulos" para realizar las tareas. La documentación sobre dichos módulos se puede encontrar en el Sitio web de Ansible. Si hay algo que no está claro, esto [vídeo de Ansible para principiantes] de NetworkChuck hace un buen trabajo explicando las cosas.
Creando nuestro Inventario Ansible
Ahora que tenemos una comprensión básica de Ansible y cómo funciona, podemos crear nuestro inventario. El formato puede ser YAML o INI, para mantenerlo simple, usaremos INI y solo agregaremos un host.
Aquí hay un archivo de ejemplo:
inventario.ini:
“`ini
[poderoso]
192.168.1.78
"`
Nómbrelo `inventory.ini` en su directorio `ansible`. Este archivo crea un "grupo" de `poderosos` con un solo host de `192.168.1.78`. Podemos usar esto en nuestros libros de jugadas más adelante. Puede darle el nombre de grupo y la IP que desee, según su configuración. También puede agregar más anfitriones al grupo si es necesario.
Implementación de libros de jugadas de Ansible
Primero, queremos verificar que Ansible esté funcionando:
Tenga en cuenta que nuestra clave pública ssh debe estar en el archivo authorized_keys en el host al que intentamos llegar. Si no, este comando fallará. Estamos usando el grupo `poderoso`, pero usa el nombre que hayas llamado tuyo.
`ansible -i ./inventario.ini -m ping -u administrador poderoso`
Si eso funciona, podemos aprovisionar nuestros libros de jugadas en ese nodo.
El libro de jugadas que estamos implementando simplemente actualiza el sistema, lo reinicia y luego espera a que vuelva a estar en línea. Si tiene varios nodos en el grupo, pasará por cada nodo uno por uno, esperando que el anterior vuelva a estar en línea antes de reiniciar el siguiente. Esto le da a los servicios en el nodo el tiempo adecuado para cerrarse y migrar si está usando algo como Enjambre de estibadores.
actualización.yml:
"` Yaml
– nombre: Actualice todos los nodos y reinicie
reunir_hechos: no
anfitriones: "{{ host_variable }}"
convertirse en: si
de serie: 1
Tareas:
– nombre: Actualización y actualización | {{ nombre_host_de_inventario }}
apto:
# forzar la compatibilidad con versiones anteriores
force_apt_get: sí
actualización_caché: sí
actualización: 'sí'
– nombre: Reiniciar | {{ nombre_host_de_inventario }}
reiniciar:
# cuánto tiempo espera que el nodo vuelva a estar en línea después de reiniciar
reinicio_tiempo de espera: 300
# cuánto tiempo esperar para reiniciar después de que finalice la tarea anterior (apt)
retraso_pre_reinicio: 60
– nombre: Ping | {{ nombre_host_de_inventario }}
silbido:
– nombre: Pausa | {{ nombre_host_de_inventario }}
pausa:
minutos: 5
"`
`ansible-playbook -i ./inventory.ini -e variable_hosts=powerful -u administrador -K ./update.yml`

Explicación de las banderas:
– -i: especifica el archivo de inventario.
– -e: Tenemos que especificar el host, en el libro de jugadas tenemos una variable `variable_hosts`, que es lo que se pasa al libro de jugadas.
– -u: este es el usuario utilizado para ejecutar los comandos en el host.
– -K: Esto le dice al libro de jugadas que solicite al usuario la contraseña de sudo, de lo contrario, el libro de jugadas fallará.
Pensamientos Finales
Ansible es una herramienta increíblemente poderosa y versátil que se puede usar para una variedad de cosas. Apenas arañamos la superficie con este artículo, pero debe continuar experimentando y automatizando tareas para obtener más información al respecto. Ya sea automatizando implementaciones de Kubernetes o simplemente actualizando sus sistemas como lo hicimos hoy.
-Ethan Edwards
Interactuar con StorageReview
Boletín informativo | Canal de YouTube | LinkedIn | @Instagram | Twitter | Facebook | @TikTok | RSS Feed