Primeros pasos con Ansible
Ansible es una tecnología que nos permite el aprovisionamiento de máquinas de manera remota y automatizada, por medio de un código declarativo que indica las características que debe incluir el servidor administrado. Si no conoces todavía los detalles sobre el funcionamiento y las características de esta herramienta te recomendamos la lectura del post Qué es Ansible.
Podemos trabajar con Ansible en la mayoría de los entornos y por supuesto en todos los servidores de Arsys, permitiendo en pocos minutos aprovisionar cualquier número de máquinas con las configuraciones deseadas. En este artículo vamos a explicar cómo realizar los primeros pasos con Ansible, de manera que podamos configurar el ordenador que hará de nodo de control, desde el que administraremos las máquinas mediante conexiones SSH.
Nodo de control para aprovisionamientos con Ansible
El primer paso para comenzar a usar Ansible es hacernos con un nodo de control, desde donde podremos orquestar los aprovisionamientos. Únicamente necesitamos instalar Ansible en el nodo de control, el ordenador que permite realizar todas las tareas sobre los servidores remotos. Dado que Ansible no requiere de agente en los servidores remotos a aprovisionar, no es necesario instalar nada en ellos.
Como nodo de control podemos usar sistemas operativos como Linux o MacOS, con el único requisito de tener Python instalado. No es posible instalar Ansible directamente sobre un equipo Windows por motivos que se explican. Salvo esa excepción, como nodo de control podemos usar cualquier ordenador conectado a Internet, aunque la recomendación sería que el nodo de control perteneciese a una red próxima a la de los servidores a administrar. Por lo tanto, si necesitamos administrar muchas máquinas del cloud de Arsys por agilidad y rendimiento sería mucho mejor que el nodo de control fuera otra máquina del cloud de Arsys.
Para instalar Ansible en el nodo de control podemos usar PIP, aunque la manera más recomendada es usar los gestores de paquetes del propio sistema operativo. El comando dependerá de la distribución.
En CentOS sería algo como:
sudo yum install ansible
En Ubuntu es posible que haya que configurar unas fuentes de repositorios adicionales, lo que conseguiremos instalar Ansible con este conjunto de comandos:
sudo apt update sudo apt install software-properties-common sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt install ansible
Crear nuestro inventario de máquinas a configurar
Una vez que has conseguido instalar Ansible, el siguiente paso es realizar el inventario de máquinas que se podrán administrar de manera remota. Esta tarea la debemos realizar en el ordenador que hace de nodo de control. Para ello tenemos que editar el archivo /etc/ansible/hosts, colocando las IPs de las máquinas que se desean configurar, o bien los nombres de los dominios donde se encuentran esas IP. Este archivo tendría un código como este:
0.0.0.1 www.example.com
Este archivo permite muchos tipos de configuraciones, como por ejemplo crear grupos de máquinas, asignando variables de todo tipo para poder definir correctamente las conexiones. Podemos encontrar más información en la documentación, sin embargo queremos señalar una variable fundamental, que nos sirve para definir las llaves SSH que queremos usar.
Definir la ruta de la llave ssh
Para administrar remotamente hace falta disponer de acceso ssh a los servidores que nos queremos conectar para realizar la administración. Para ello necesitamos tener configurada la llave SSH, disponiendo la llave privada en el nodo de control y la llave pública en el servidor a administrar, que deberá estar convenientemente recogida en el archivo authorized_keys. En el archivo del inventario podemos usar la variable «ansible_ssh_private_key_file» al definir el host. El código del archivo /etc/ansible/hosts, quedaría de la siguiente manera.
0.1.2.3 ansible_ssh_private_key_file=~/.ssh/admin
Por supuesto, sustituyendo la IP 0.1.2.3 por la que tenga el servidor a administrar.
Comprobar la conexión
Una vez configurada la máquina o máquinas en el archivo de hosts de Ansible, podemos probar la conexión realizando una sencilla operación de ping. Para ello, desde el ordenador que hace de nodo de control, lanzamos el siguiente comando.
ansible all -m ping
Recibiremos como respuesta una salida como la que se muestra a continuación:
0.1.2.3 | SUCCESS => { 'ansible_facts': { 'discovered_interpreter_python': '/usr/bin/python3' }, 'changed': false, 'ping': 'pong' }
En este punto ya hemos realizado los Primeros pasos con Ansible, completando la configuración de los host que vamos a controlar desde el nodo de control. Así que ya estamos en condiciones de crear nuestro primer playbook, para lanzar los procesos de administración y aprovisionamiento del servidor, tarea que explicaremos en el próximo post.