ANSIBLE (2) posibilidades del fichero Hosts

Para empezar a trabajar con ANSIBLE, lo primero que debemos es conocer el potencial que tiene el fichero de configuración /etc/ansible/hosts . Siendo en este donde definiremos nuestro servidores, grupos de servidores, grupos de grupos, variables… etc.

Para entenderlo, vamos a crear dos grupos de servidores (zona.01 y zona.02), dentro de los cuales insertaremos los servidores descritos en el artículo anterior:

Una funcionalidad interesante a la hora de añadir los nombres o direcciones ip de nuestros servidores, es utilizar rangos. De forma que si por ejemplo queremos añadir  los servidores miserver01.practicas.es al miserver99.pcracticas.es , lo haremos incluyendo el rango entre corchetes   miserver[01:99].pcracticas.es. Esto también funciona utilizando un rango alfabético dentro del nombre del host  miserver_[a:h].practicas.es.

Podemos comprobar que ambos grupos funcionan correctamente:

Ahora podemos crear un grupo (zona.all) que incluya ambos grupos. Esto lo haremos añadiendo dicho grupo en el fichero hosts, con la opción «children», la cual permite crear agrupaciones de grupos:

Y comprobamos su funcionalidad:

También podemos asignar variables a cada grupo mediante la opción «vars». En nuestro caso vamos a definir el nombre de usuario que vamos a utilizar en el grupo «zona.all»:

Ahora ya no necesitamos utilizar «-u» cuando ejecutemos Ansible, ya que obtendrá el nombre de usuario de la variable ansible_user  :

En caso de necesitar asignar variables por defecto a todos los grupos, utilizaremos el grupo [defaults] :

También podemos añadir las variables en cada linea después del nombre o ip de cada host. Pudiendo modificar los hosts de los grupos zona.01 y zona.02 para especificar en cada caso el nombre del usuario a utiliza o incluso el puerto:

Esto es muy útil cuando el cada host tiene un modo de acceso diferente, ya que también se puede indicar el puerto (ansible_port), el usuario (ansible_user) o incluso escalar privilegios (ansible_become).

Podemos encontrar documentación sobre todas las variables en la documentación de Ansible: http://docs.ansible.com/ansible/intro_inventory.html