Uso de variables en Ansible

Ansible es simplemente un motor de TI de código abierto que se utiliza para automatizar tareas de administración de sistemas remotos, como tareas de aprovisionamiento, orquestación de servicios e implementación de aplicaciones, entre muchas otras tareas de TI.

Ansible no tiene agentes, ya que no es necesario instalar ningún software en los nodos de destino. Tiene un archivo llamado inventario de donde obtiene la información de los nodos que tiene que administrar.

Ansible usa libros de jugadas para describir trabajos de automatización y los libros de jugadas usan YAML, un lenguaje muy simple que es fácil de entender, leer y escribir para los humanos. YAML es un lenguaje de serialización de datos legible por humanos que se usa con frecuencia para archivos de configuración. Pero podría usarse en muchas aplicaciones donde se almacenan datos. Debido a que YAML está en formato legible por humanos, incluso el personal de soporte de la infraestructura de TI puede leer el libro de jugadas y solucionar los problemas según sea necesario.

¿Qué cubriremos?

En este tutorial, exploraremos las variables utilizadas en Ansible y también revisaremos algunos casos de uso de estas variables en los libros de jugadas de Ansible.

requisitos previos

Para realizar los diversos ejemplos de este tutorial, se deben cumplir los siguientes requisitos:

1. Un nodo controlador de Ansible (Ubuntu 20.04 en nuestro caso) y uno o dos nodos de destino.

2. Comprensión básica de Ansible y redacción de un libro de jugadas.

Si recién está comenzando a aprender Ansible, le recomendamos que comience a aprender Vagrant primero y luego configure un entorno de prueba local básico usando Vagrant. Este laboratorio debe contener un nodo de controlador y dos nodos de destino.

Operación de Ansible

Ansible opera conectándose a los nodos de destino y enviándoles pequeños programas conocidos como “módulos Ansible”. Después de eso, Ansible ejecuta estos módulos (a través de SSH) y luego los elimina. No hay necesidad de servidores, demonios o bases de datos, y su biblioteca de módulos puede almacenarse en cualquier computadora.

El nodo de gestión es el nodo de control que supervisa cómo se lleva a cabo el libro de jugadas en su totalidad. Es el nodo desde el que está operando la configuración. En el archivo de inventario se proporciona una lista de hosts en los que se deben ejecutar los módulos de Ansible. El nodo de administración se conecta a través de SSH, ejecuta los pequeños módulos en el sistema host e instala el producto o el software.

La belleza de Ansible es que elimina módulos con éxito después de haberlos instalado. Se conecta al sistema host, ejecuta las instrucciones y, si la instalación es exitosa, elimina el código que se copió en la máquina host y luego se ejecutó.

variables ansibles

Las variables utilizadas en Ansible y las variables en cualquier otro lenguaje de programación son bastante similares. Una variable puede provenir de un archivo de libro de jugadas, se puede pasar a CLI o podemos usar la palabra clave ‘registrar’ para almacenar el valor o los valores de retorno de una tarea. Puede utilizar una variable en cualquier lugar de los argumentos del módulo, en p, con las declaraciones ‘cuando’ y, por supuesto, dentro de los bucles dándole un valor y usándolos. Las condiciones se pueden colocar alrededor del valor de las variables y el libro de jugadas puede utilizarlas en consecuencia.

Hay algunas reglas que hacen que un nombre de variable sea válido, como que debe comenzar con una letra y constar de letras, números y guiones bajos únicamente.

Variables en un libro de jugadas

Podemos definir variables de varias formas para usarlas en tareas de Ansible:

1. Desde la línea de comandos: usando la opción ‘–extra-vars’ al ejecutar el comando ansible-playbook:

$ ansible-playbook sample.yml --extra-vars "my_vars=bar"

2. De manera similar, un archivo (JSON/YAML) que contiene una lista de variables se puede pasar como:

$ ansible-playbook sample.yml --extra-vars "@my_vars_file.json"

El archivo ‘my_vars_file.json’ está en la misma ubicación que el libro de jugadas.

3. Las variables se pueden enumerar dentro del libro de jugadas principal al introducir una sección ‘vars’:

---

- hosts: web

vars:

my_var2: my_val2

tasks:

# Display "Variable ‘my_var2’ is set to ‘my_val2’".

- debug: msg="Variable ‘my_var2’ is set to {{ my_var2 }}"

4. Similar a lo anterior, podemos usar la sección ‘vars_file’ para especificar un archivo que contenga variables:

---

- hosts: web

vars_files:

- my_vars.yml

tasks:

# Display "Variable ‘my_var1’ is set to ‘my_val1’".

- debug: msg="Variable ‘my_var1’ is set to {{ my_var1 }}"

Variables en un archivo de inventario

En este método, las variables se especifican en línea con un host o a nivel de grupo. Sin embargo, Ansible no recomienda usar archivos de inventario para almacenar variables. Referirse a example abajo:

#Host-specific variables (inline definition).

[London]

web1.example.com proxy_state=present

web2.example.com proxy_state=absent

# Variables defined for the entire group.

[London:vars]

cdn_host=london.times.example.com

compute_val=96

Variables registradas

Las variables registradas se pueden usar para almacenar el valor devuelto por una tarea/comando en tiempo de ejecución y luego se pueden usar en otras tareas. Ejemplo:

---

- hosts: all

gather_facts: no

become: false

tasks:

- name: Check the user name

ansible.builtin.shell: /usr/bin/whoami

register: login

- name: Display the user name using the output from previous task

debug: msg="Logged in as user {{ login.stdout }}"

El alcance de la variable se decide por la ubicación donde se establece una variable.

Se definen en tres ámbitos:

1. Global: estas variables se configuran desde la línea de comandos o mediante el archivo de configuración de Ansible.

2. Juego: Esta variable se define a nivel de juego.

3. Anfitrión: estas variables se definen en los grupos de anfitriones y/o anfitriones individuales por el inventario, la recopilación de datos o la tarea.

Conclusión

En este tutorial hemos aprendido sobre varios tipos de variables utilizadas en Ansible. De hecho, son muy útiles para aumentar la flexibilidad y la comprensibilidad de un código cuando se utilizan de forma adecuada.

Actualizaciones del boletín

Ingrese su dirección de correo electrónico a continuación para suscribirse a nuestro boletín