¿Cómo instalar y configurar Ansible en Ubuntu?

Primeros pasos con Ansible en Ubuntu para mejorar el aprovisionamiento del entorno y la gestión de la configuración.

La gestión de la configuración es una etapa crucial en el ciclo de vida de DevOps. Ayuda en la automatización y orquestación de la infraestructura de TI.

Hay varias herramientas para la gestión de la configuración, por ejemplo, Puppet, Ansible, Chef y SaltStack. Y, por supuesto, Ansible es una de las herramientas más populares en DevOps. Puede administrar miles de servidores y su infraestructura de TI completa con facilidad.

Cubriremos lo siguiente en este artículo.

  • Instalación de Ansible
  • Intercambio de claves SSH
  • Configuración del cliente Ansible
  • Pruebas ansible

Instalación de Ansible

Para mantenerlo simple, intentemos usar Ansible en dos servidores. Uno será ansible-server y otro ansible-client con la siguiente IP.

  • servidor ansible – 10.0.0.1
  • cliente ansible – 10.0.0.25

La instalación es sencilla… se debe realizar lo siguiente en todos los servidores en los que desee utilizar Ansible. En este caso, en la parte superior de ambos servidores.

  • Ejecute el siguiente comando para instalar el software necesario para instalar ansible.
[email protected]:~# apt install software-properties-common
  • Instale el repositorio con el paquete ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
  • Actualizar la herramienta de empaquetado avanzada (apt)
[email protected]:~# apt update
  • Y, finalmente, ejecute el siguiente comando para instalar
[email protected]:~# apt install ansible

Tomará unos segundos instalar el paquete necesario.

¿Cómo aseguras que está instalado y su versión?

Bueno, es fácil. Puede usar la sintaxis de versión con ansible para averiguarlo como se muestra a continuación.

[email protected]:~# ansible --version
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
[email protected]:~#

Como puede ver, Ansible 2.8.1 está instalado y proporciona la información necesaria, como la ubicación del archivo de configuración, el módulo de python.

A continuación, debemos realizar el intercambio de claves SSH para que el servicio y un cliente puedan comunicarse entre sí.

Intercambio de claves SSH

Ansible se conecta a su cliente a través de SSH (Secure shell).

Primero generaremos una clave pública en el servidor ansible, que debe copiarse en el cliente ansible.

Asegúrese de haber iniciado sesión como usuario raíz.

  • Genere la clave usando el comando ssh-keygen como se muestra a continuación
[email protected]:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+
[email protected]:~#

Como te habrás dado cuenta, ha generado una clave pública en la carpeta .ssh. La ruta completa es /root/.ssh/id_rsa.pub

Nota: asegúrese de que los archivos de clave privada y pública no sean legibles en todo el mundo. Puede enumerar los archivos para verificarlos.

cd /root/.ssh
[email protected]:~# ls -l 
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa 
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub

Si nota que el permiso es incorrecto, puede cambiarlo usando el comando chmod

Ex:

chmod 400 id_rsa
chmod 400 id_rsa.pub

Copiemos la clave pública al host Ansible cuya dirección IP es 192.168.56.101

[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[email protected]:~/.ssh#

Puede ver en el resultado anterior, 1 clave se ha agregado con éxito. Esto indica que se intercambia la clave SSH.

A continuación, configuraremos un cliente Ansible.

Configuración del cliente de Ansible

Supongo que ya ha seguido los pasos de instalación de Ansible en el servidor del cliente como se explica en los pasos anteriores.

La configuración del cliente o host no es más que hacer que el servidor Ansible esté al tanto de los clientes. Y, para hacerlo:

  • Iniciar sesión en el servidor de Ansible
  • Vaya a /etc/ansible
  • Agregue lo siguiente en el archivo de hosts usando su editor favorito
[Client] 
node1 ansible_ssh_host=10.0.0.25

Prueba ansible

Si ha seguido todos los pasos correctamente, recibirá un mensaje de ÉXITO cuando ejecute el siguiente comando en el servidor ansible.

[email protected]:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[email protected]:~/.ssh#

Thea arriba hace ping al cliente para probar la conectividad y confirmar si es buena o no.

Conclusión

Espero que esto le dé una idea para comenzar con la instalación y jugar. Estén atentos para obtener más tutoriales de Ansible o también consulten este curso de Udemy Mastering Ansible.