3.1. Conocimientos Básicos de Ansible en Ubuntu

  • Para instalar Ansible simplemente actualice su sistema e instálelo mediante apt.

1
2
3
4
5
 $ apt update -y
 $ apt dist-upgrade --fix-broken --fix-missing -y
 $ apt autoclean
 $ apt autoremove
 $ apt install ansible

Advertencia

Es recomendable añadir un usuario para este propósito específico en donde el host de Ansible está instalado, y evitar hacerlo un usuario de LDAP / AD, podría dar problemas!

Para añadirlo haga

$ adduser ansible
$ adduser ansible sudo

Luego querrá configurar una clave de SSH para acceder a todos los servidores que desee mantener con scripting de Ansible. Tener en cuenta que precisará ejecutar los comandos como el usuario de ansible pero con el argumento -K para convertirse en usuario sudo en el nodo remoto.

Esto significa que necesitará añadir un archivo de sudoers para permitirlo además del usuario de Ansible en cada nodo cliente. Por esto es recomendable hacerlo en una plantilla de VM/CT antes de despliegues masivos.

  • Añada el usuario de Ansible a los nodos clientes en los que requiera.

$ adduser ansible
  • Añada el siguiente archivo de sudoers en los nodos que usará Ansible.

$ echo "ansible ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible
$ chmod 0440 /etc/sudoers.d/ansible
$ visudo -c

Advertencia

Quizá quiera restringir las capacidades de sudo de Ansible!

Si desea restringir las capacidades de Ansible a un comando específico puede hacerlo desde el archivo sudoers, por ejemplo:

$ echo "ansible ALL=(ALL) NOPASSWD: /full/path/to/command" > /etc/sudoers.d/ansible

La salida del visudo debería ser la siguiente

/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
/etc/sudoers.d/ansible: parsed OK

Ahora volvamos al nodo HOST de Ansible

  • Generamos la clave par de SSH

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 $ ssh-keygen
 # Generating public/private rsa key pair.
 # Enter file in which to save the key (/home/ansible/.ssh/id_rsa): /home/ansible/testraa
 # Enter passphrase (empty for no passphrase):
 # Enter same passphrase again:
 # Your identification has been saved in /home/ansible/.ssh/id_rsa
 # Your public key has been saved in /home/ansible/.ssh/id_rsa.pub
 # The key fingerprint is:
 # SHA256:dThXE01tCUb7l+gvsYGMvMEsWh1oW0ifBOYfHCxjsLE ansible@ct102-ansible
 # The key's randomart image is:
 # +---[RSA 3072]----+
 # |     o.oo.  .+=++|
 # |      *=.o.....o+|
 # |     Eo.Bo= o. . |
 # |       +.*.+  o .|
 # |      . S.+ .. o.|
 # |       + B o.o  .|
 # |      o . o  .+  |
 # |     .   .   o.  |
 # |              .. |
 # +----[SHA256]-----+
  • Y ahora la copiamos a los clientes

$ ssh-copy-id node02
$ ssh-copy-id node03
$ ssh-copy-id node04
  • Luego de esto podemos ir al archivo /etc/ansible/hosts.cfg y añadir los clientes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 [proxmoxservers]
 #node02
 192.168.0.2

 [linuxservers]

 #node03
 192.168.0.3

 #node04
 192.168.0.4

Nota

Puede tener distintos grupos de nodos, lo cuál es útil para distintos scripts de actualización y despliegue.

Para ejecutar un script:

$ ansible-playbook scriptname.yml -K

Si desea aplicar el script a un solo grupo de servidores, o especificar los grupos, puede hacerlo:

$ ansible-playbook scriptname.yml -K -l servergroup
Algunos Scripts de ejemplo: