Ansible: Primeros pasos

Ansible: Primeros pasos

Ansible es una herramienta de software libre para configurar y administrar hosts. Combina instalación multi-nodo, ejecuciones de tareas ad-hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Maneja nodos a través de SSH y no requiere ningún software remoto adicional, excepto Python. Utiliza un sistema llamado playbooks para lanzar las instrucciones definidas en ficheros escritos en YAML y gestiona los hosts mediante un inventariado.

En esta práctica, vamos a instalar ansible en un sistema CentOS7

Instalación

Instalar los repositorios Epel

Instalar ansible

Primeros pasos

Configurar el archivo de inventariado

Ansible, por defecto utiliza un fichero llamado hosts para almacenar todo el inventario de máquinas que se va a gestionar

Hay diferentes formas de declarar los hosts

Crear la key ssh

Para poder utilizar ansible con los clientes, hay que pasarles la ssh-key publica a cada uno. Para ello, primero hay que generar la key

Propagar la ssh key pública

Para que ansible se pueda conectar con los clientes, estos tienen que tener la key pública. La manera tradicional de hacerlo es:

Pero si se hace de ese modo, hay que hacerlo de uno en uno. Para ser mas eficientes, vamos a crear un script que automatice el proceso

Darle permisos de ejecución

Una vez añadidos todos los servidores ejecutar el script

Nota: En los clientes hay que tener habilitadas ciertos parámetros en el archivo de configuración ssh

Una vez distribuidas las claves, se puede deshabilitar esto para mayor seguridad.

Comprobación

Para comprobar que todo esté bien, ejecutar el siguiente comando en el master

En el caso de que se quiera lanzar comandos específicos, hay que lanzarlos de la siguiente manera

Playbook

Los playbooks son las instrucciones que se ejecutarán en los hosts. Algo así como un manifiesto en puppet. Están escritos en YAML y son bastante intuitivos.

Vamos a empezar con un playbook muy sencillo que sea instalar vim en los hosts

Ahora para lanzarlo

Como se puede apreciar, solo se han generado cambios en el 10.0.0.102. Esto es porque en el otro ya estaba instalado vim y lo único que hace es asegurarse de que esté la última versión.

Variables

Para el uso de variables, sería del siguiente modo

Pero si se quieren instalar varios paquetes, hay que hacerlo de la siguiente manera

O utilizar un array con los paquetes

Roles

Ansible, recomienda el uso de roles para tener todo mas organizado. Los roles no son mas que playbooks que son llamados modularmente pero divididos en vez de en secciones en carpetas. Para hacerse una idea es similar a un modulo de puppet

La estructura de los roles, es la siguiente:

Como se puede apreciar, el nombre del rol es common y luego de el cuelgan todas las carpetas donde habrá que meter los playbooks que queramos

Para hacer un PoC de esto, vamos a instalar apache. Para comenzar, hay que generar la estructura de rol

Ahora empezaremos a definir los playbooks. Cuando se trabaja con roles, los nombres de los playbooks principales tiene que ser main.yml

tasks

handlers

files

En este caso, con esto es suficiente. Pero si se quisiese añadir variables o plantillas, habría que hacerlo en sus respectivas carpetas.

Ahora vamos a crear el playbook que llame a este

Lanzar el playbook

Y con esto ya estaría preparado para desplegar apaches.

Fuentes

http://blog.deiser.com/primeros-pasos-con-ansible/

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-centos-7

https://www.digitalocean.com/community/tutorials/configuration-management-101-writing-ansible-playbooks

No Comments

Post A Comment

CAPTCHA