Introducción
Ansible es un sistema de gestión para simplificar el control de una gran cantidad de servidores al mismo tiempo. Esta herramienta le permite controlar muchos sistemas diferentes automáticamente desde una ubicación central.
En este tutorial veremos cómo instalar y configurar Ansible en Ubuntu 18.04 LTS.
Con Ansible es posible conectarse simultáneamente a través de SSH a varios servidores de forma remota y realizar todas las operaciones que normalmente se utilizan para administrar un servidor. Cualquier servidor que pueda administrar a través de SSH, también puede administrarlo a través de Ansible.
Prerrequisitos
Antes de comenzar con esta guía, debe tener:
Un usuario no root con privilegios sudo establecidos en su servidor. Siga esta guía: Configuración inicial en Ubuntu 18.04 LTS.
Claves SSH generadas para el usuario no root en su servidor Ansible. Siga el primer paso de esta guía: Cómo configurar claves SSH en Ubuntu 18.04.
Dos o más servidores Ubuntu 18.04. Uno de estos se utilizará como servidor Ansible, mientras que el resto se utilizará como host Ansible. Todos deberían tener un usuario no root con privilegios de sudo y un firewall básico configurado.
Instalar Ansible
Instale Ansible en la computadora que utilizará para conectarse a sus servidores.
Actualice la lista de paquetes de Ubuntu, desde la terminal:
sudo apt update
Instale el siguiente paquete, para facilitar la configuración de algún software:
sudo apt install software-properties-common
Agregue el repositorio de Ansible:
sudo apt-add-repository ppa:ansible/ansible
Presione ENTRAR cuando se le solicite.
Actualice la lista de paquetes nuevamente (en Ubuntu 18.04 ya deberían haberse actualizado):
sudo apt update
Instalar Ansible:
sudo apt install ansible
Configurar el acceso SSH
En el servidor Ansible (generalmente la computadora local), use el comando cat para imprimir el contenido del archivo de clave pública SSH del usuario:
cat ~/.ssh/id_rsa.pub
Copie el contenido del archivo y conéctese vía SSH a uno de los servidores que desea administrar usando Ansible:
ssh utente@indirizzo_ip
Una vez conectado al servidor, cree el directorio ~ /.ssh, este comando creará el directorio si es necesario, o no hará nada si ya existe:
mkdir -p ~/.ssh
Ejecute el siguiente comando, reemplazando public_key con el mensaje de salida recibido del comando anterior cat ~ /.ssh /id_rsa.pub:
echo chiave_pubblica >> ~/.ssh/authorized_keys
EJEMPLO (no use esta clave pública):
echo AAAAB3NzaC1yc2EAAAADAQABAAABAQDdTV41d4YIf0EqISOryVM4zF2Ucv8ekGtOg6t3RjSJqKfW/XS6n7bzI5yZd3QlvI0M8P+xdUnKxIQpDSkBJaySOmVq1QmmE74iRFvWygsqB3jlEyagnH8h3SKjh5FLTxxUZQxwU351BRCUSxoqLdA30KgrXKOWM/C9lm7dx3DsucV/iGdsv8m2ojwdwwRUFTfWo4PsjJOZ8XX+JciqdTVIbKnPklsosu+8+WvVKiuZYqaq4EMmQXX/wHXAo77FqWg+czDFwexYkFSIC6Lt5p3eS0RVNp4HyU36MmXvHsfIXhkaAJp5Myxd6FdFLcM/5zm52SqAZDnMwIXDr71aArId user@nome >> ~/.ssh/authorized_keys
Actualice el índice del paquete del servidor:
sudo apt update
Instale Python, necesario para comunicarse con Ansible:
sudo apt install python
Cierre la conexión con el servidor que desea administrar a través de Ansible:
exit
Repita estos pasos para cada servidor que desee administrar con Ansible desde su computadora.
Configurar Ansible
Abra el archivo de hosts para configurar Ansible, desde su computadora principal, para que pueda conectarse a servidores configurados previamente:
sudo nano /etc/ansible/hosts
Configure el nombre del grupo, el alias y la dirección IP del servidor. El nombre y el alias del grupo no tienen restricciones, puede ingresar lo que prefiera.
En este ejemplo insertamos dos servidores, que gestionaremos con Ansible.
[primo_gruppo]
Primo ansible_ssh_host=ip_primo
Secondo ansible_ssh_host=ip_secondo
Estos dos servidores son accesibles desde Ansible mediante SSH. La contraseña no debería ser necesaria si la clave pública se ha configurado correctamente.
Si ha iniciado sesión como usuario no root e intenta conectarse a sus servidores con Ansible ahora, recibirá un error, ya que la clave SSH está incrustada para el usuario root en sistemas remotos y Ansible intentará conectarse como el usuario actual, es decir, con el usuario con el que está conectado.
En su computadora, en la que tiene Ansible instalado, está utilizando un usuario llamado, por ejemplo, "XXX". Ansible intentará conectarse a cada servidor con ssh XXX @ ip_address. Este comando no funcionará si en el servidor al que estás intentando conectarte no hay ningún usuario con el mismo nombre, en nuestro caso "XXX".
Para solucionar este problema, podemos crear un archivo, para cada grupo, que le dice a todos los servidores del mismo grupo que se conecten como root.
Crea una carpeta para los grupos:
sudo mkdir /etc/ansible/miei_gruppi
Cree un archivo para el primer grupo:
sudo nano /etc/ansible/miei_gruppi/primo_gruppo
Los archivos YAML comienzan con ---, así que asegúrese de ingresar estos caracteres correctamente.
Pega las siguientes líneas:
---
ansible_ssh_user: root
Guarde y cierre el archivo.
Usa Ansible
Ahora puede usar Ansible, la configuración básica está lista.
Algunos ejemplos de uso de Ansible.
Haga ping a todos los servidores configurados escribiendo:
ansible -m ping all
Debería recibir un mensaje de salida similar al siguiente:
Primo | SUCCESS => {
"changed": false,
"ping": "pong"
}
Secondo | SUCCESS => {
"changed": false,
"ping": "pong"
}
El parámetro -m significa el "módulo", por lo que en este caso el comando solicitó el módulo "ping". Con el parámetro all, puede seleccionar todos los servidores y grupos al mismo tiempo.
Para especificar solo un grupo:
ansible -m ping primo_gruppo
O para especificar un solo servidor:
ansible -m ping Primo
Para especificar varios servidores:
ansible -m ping Primo:Secondo
Para un segundo ejemplo del uso de Ansible, podemos ver el espacio en disco en nuestros servidores:
ansible -m shell -a 'df -h' Primo:Secondo
La instalación y configuración de Ansible en Ubuntu 18.04 LTS ha finalizado.