Ansible es una herramienta de automatización utilizada para tareas de TI comunes, como la configuración de máquinas remotas o la organización de contenedores, la implementación continua, etc. En este artículo, usaremos Ansible para configurar varias máquinas remotas mediante un Node maestro o de control (máquina que administra o envía tareas a estas máquinas remotas para que las ejecuten).
Antes de comenzar la implementación, debe estar familiarizado con algunas terminologías:
- Los Nodes de control se utilizan para ejecutar comandos y playbooks de Ansible invocando el comando ansible o ansible-playbook .
- Los hosts no son más que las máquinas remotas que están controladas por el Node de control, se establece una conexión SSH entre estas máquinas y el Node de control antes de enviar las tareas por el Node de control y los hosts que las reciben.
- Los playbooks son archivos de configuración/archivos de tareas escritos en YAML. Estos contienen un conjunto de tareas que deben ejecutarse en los hosts de forma secuencial.
Ahora que ya sabes lo básico, comencemos con la implementación. Para este artículo, estamos utilizando tres instancias EC2 en AWS, de las cuales una es un Node de control o maestro y las otras dos son hosts/máquinas remotas. EC2 (nube informática elástica) es una de las ofertas más populares de Amazon. La instancia EC2 es un servidor o máquina virtual que puede usar para implementar su aplicación. Viene bajo IAAS (Infraestructura como servicio). Las capacidades del servicio EC2 están relacionadas con la informática, el almacenamiento y la red en alquiler.
Si desea utilizar instancias EC2, debe asegurarse de que el Node de control pueda acceder a cada una de las instancias (hosts) y, para hacerlo, debe agregar las claves públicas SSH del host en las claves SSH autorizadas de los Nodes de control y viceversa. Entonces, hagamos eso primero usando el siguiente comando:
//on each machine run and hit enter this will generate two files in root namely .ssh/id_rsa and .ssh/id_rsa.pub $ ssh-keygen
Ahora corte y copie el contenido de id_rsa.pub y agréguelo a otros servidores que sean hosts. Si lo está haciendo para el Node de control en los hosts, use los siguientes comandos:
$ cat ~/.ssh/id_rsa.pub //on other servers $ cat {coppied_content} >> ~/.ssh/authorized_keys
Ahora verifique si puede ssh para alojar máquinas desde la máquina de control
En Control-node necesitamos instalar Ansible:
$ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible //this will add ansible repository in your machine $ sudo apt-get update // install ansible using $ sudo apt-get install ansible
Compruebe si Ansible está instalado:
$ ansible --version
Ahora necesitamos agregar la dirección del host dentro del inventario del host, que es un archivo en /etc/ansible llamado host donde podemos agregar direcciones IP o alias o número de grupo de direcciones IP. Vaya al archivo /etc/ansible/hosts y agregue la dirección IP de la máquina host. Puede ingresar uno por uno o crear un grupo que luego se puede usar en el libro de jugadas para especificar este grupo de direcciones ingresando el nombre del grupo.
Ahora verifiquemos si Ansible puede llegar a nuestro host. Los módulos de Ansible son scripts preconstruidos que se pueden usar dentro de nuestro libro de jugadas o como un comando independiente con algunos parámetros para ejecutar tareas específicas, por ejemplo, el siguiente comando se usa para hacer ping a todos los servidores en ese grupo.
ansible -m ping <group-name>
En la imagen de arriba, puede ver que después de una solicitud de ping al grupo de un par de servidores, recibió una devolución de llamada exitosa.
Probemos algunos módulos Ansible más
// check the os-release of our hosts $ ansible web-servers -a "cat /etc/os-release"
También puede reiniciar las máquinas usando
$ ansible -a web-servers "reboot"
Ahora pasemos al uso de libros de jugadas de Ansible como se explicó anteriormente, estos no son más que archivos YAML.
Verifiquemos si el editor de texto nano está instalado en nuestras máquinas anfitrionas (máquinas remotas). Cree un archivo YAML y pegue las líneas a continuación para asegurarse de que la sangría sea correcta. Lo que está pasando aquí es:
- nombre: es el nombre del libro de jugadas
- hosts – nombre del grupo donde agregamos nuestros servidores
- tareas: es un conjunto de tareas escritas como una array en YAML apt es el comando y el estado es el estado del servicio o nano.
- name: isnano hosts: web-servers tasks: - name: ensure nano is installed apt: name: nano state: latest
Hay muchas cosas que puede hacer con Ansible, controlar servidores y servidores remotos o máquinas usando módulos y playbooks, así que no se detenga aquí, pruebe otras cosas usando Ansible.