Cómo instalar y configurar Ansible en Ubuntu 18.04 LTS
Ansible es un software gratuito y de código abierto que puede utilizarse para automatizar el aprovisionamiento de software, la gestión de la configuración y el despliegue de aplicaciones. A diferencia de Puppet o Chef, no tienes que configurar un entorno cliente-servidor antes de utilizar Ansible. Puedes gestionar varios hosts desde una ubicación central. Esta herramienta es muy sencilla pero potente para automatizar complejos entornos de aplicaciones informáticas de varios niveles. Ansible se comunica a través de canales SSH normales para recuperar información de máquinas remotas y realizar tareas.
En este tutorial, aprenderemos a instalar y utilizar Ansible en un servidor Ubuntu 18.04.
Requisitos
- Dos sistemas de servidores Ubuntu 18.04 con el servidor OpenSSH instalado.
- Una dirección IP estática 192.168.0.101 configurada en el sistema servidor y 192.168.0.104 configurada en el sistema cliente.
- Se configura un usuario no root con privilegios sudo en ambos sistemas.
Cómo empezar
Antes de empezar, actualiza tu sistema con la última versión con el siguiente comando:
sudo apt-get update -y
sudo apt-get upgrade -y
Una vez que tu sistema esté actualizado, reinicia tu sistema para aplicar los cambios.
Instalar y configurar Ansible
Por defecto, la última versión de Ansible no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el PPA de Ansible a tu servidor. Puedes hacerlo ejecutando el siguiente comando:
sudo apt-add-repository ppa:ansible/ansible
A continuación, actualiza el repositorio e instala Ansible con el siguiente comando:
sudo apt-get update -y
sudo apt-get install ansible -y
Una vez completada la instalación, puedes comprobar la versión de Ansible con el siguiente comando
sudo ansible --version
Salida:
ansible 2.7.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.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
A continuación, tendrás que definir el sistema cliente que quieres gestionar en el archivo de hosts de Ansible. Puedes hacerlo editando el archivo /etc/ansible/hosts:
sudo nano /etc/ansible/hosts
Añade las siguientes líneas:
[Client] node1 ansible_ssh_host=192.168.0.104
Guarda y cierra el archivo, cuando hayas terminado.
Configurar las claves SSH para el sistema cliente
Ansible utiliza SSH para comunicarse con el host Cliente. Así que tendrás que configurar la autenticación ssh basada en claves para el host Cliente.
Primero, genera un par de claves SSH con el siguiente comando:
ssh-keygen
Salida:
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:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow root@ubuntu1804 The key's randomart image is: +---[RSA 2048]----+ | . . . | | . . . + | | o . * | | . o . o o | | . o S o | | O .oo.. . | | * Bo.* + oo | | ..oo+=.E =o = | | ooo*++...+* | +----[SHA256]-----+
A continuación, copia esta clave pública en el sistema Cliente con el siguiente comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Salida:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /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.
Trabajar con Ansible
Ahora Ansible está instalado y configurado. Es hora de probar Ansible.
En el servidor de Ansible, intenta hacer ping a tu sistema Cliente utilizando Ansible con el siguiente comando.
ansible -m ping Client
Resultado:
node1 | SUCCESS => { "changed": false, "ping": "pong" }
Si tienes varios clientes configurados en tu archivo de hosts de Ansible. Entonces, puedes hacer ping a todos los sistemas Cliente con el siguiente comando:
ansible -m ping all
Puedes comprobar el estado del servidor web Apache en el sistema Cliente con el siguiente comando:
ansible -m shell -a 'service apache2 status' Client
Salida:
node1 | CHANGED | rc=0 >> * apache2 is running
Para comprobar el tamaño de la partición del sistema Cliente, ejecuta el siguiente comando:
ansible -m shell -a 'df -h' Client
Salida:
node1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda1 138G 48G 83G 37% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 1.9G 4.0K 1.9G 1% /dev tmpfs 384M 1.2M 383M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 67M 1.9G 4% /run/shm none 100M 36K 100M 1% /run/user /dev/sda5 225G 35G 180G 16% /Data
Enhorabuena! has instalado y configurado correctamente Ansible en el servidor Ubuntu 18.04. Ahora puedes utilizar fácilmente Ansible para ejecutar tareas sencillas de forma remota.