Ansible es un software gratuito y de código abierto que se puede utilizar para automatizar el aprovisionamiento de software, la gestión de la configuración y la implementación de aplicaciones. A diferencia de Puppet o Chef, no tiene que configurar un entorno cliente-servidor antes de usar Ansible. Puede administrar múltiples hosts desde una ubicación central. Esta herramienta es muy simple pero poderosa para automatizar entornos complejos de aplicaciones de TI 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 cómo instalar y usar Ansible en el servidor Ubuntu 18.04.
Requisitos
- Dos sistemas de servidor Ubuntu 18.04 con servidor OpenSSH instalado.
- Se configura una dirección IP estática 192.168.0.101 en el sistema servidor y 192.168.0.104 en el sistema cliente.
- Se configura un usuario no root con privilegios sudo en ambos sistemas.
Cómo empezar
Antes de comenzar, actualice su sistema con la última versión con el siguiente comando:
sudo apt-get update -y
sudo apt-get upgrade -y
Una vez que su sistema esté actualizado, reinícielo para aplicar los cambios.
Instalar y configurar Ansible
De forma predeterminada, la última versión de Ansible no está disponible en el repositorio predeterminado de Ubuntu 18.04. Por lo tanto, deberá agregar Ansible PPA a su servidor. Puede hacerlo ejecutando el siguiente comando:
sudo apt-add-repository ppa:ansible/ansible
A continuación, actualice el repositorio e instale Ansible con el siguiente comando:
sudo apt-get update -y
sudo apt-get install ansible -y
Una vez completada la instalación, puede verificar 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, deberá definir su sistema cliente que desea administrar en el archivo de hosts de Ansible. Puede hacerlo editando el archivo /etc/ansible/hosts:
sudo nano /etc/ansible/hosts
Agregue las siguientes líneas:
[Client] node1 ansible_ssh_host=192.168.0.104
Guarde y cierre el archivo cuando haya terminado.
Configurar claves SSH para el sistema cliente
Ansible usa SSH para comunicarse con el host del cliente. Por lo tanto, deberá configurar la autenticación ssh basada en claves para el host del cliente.
Primero, genere 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 [email protected] 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, copie esta clave pública en el sistema del 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.
Trabajando con Ansible
Ansible ahora está instalado y configurado. Es hora de probar Ansible.
En el servidor de Ansible, intente hacer ping en su sistema de cliente usando Ansible con el siguiente comando.
ansible -m ping Client
Salida:
node1 | SUCCESS => { "changed": false, "ping": "pong" }
Si tiene varios clientes configurados en su archivo de hosts de Ansible. Luego, puede hacer ping a todo el sistema del Cliente con el siguiente comando:
ansible -m ping all
Puede verificar 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 verificar el tamaño de la partición del sistema Cliente, ejecute 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
¡Felicidades! Ha instalado y configurado correctamente Ansible en el servidor Ubuntu 18.04. Ahora puede utilizar fácilmente Ansible para ejecutar tareas sencillas de forma remota.