¿Qué son las variables en Ansible y para qué sirven?

| Última modificación: 23 de abril de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Las variables en Ansible se utilizan para gestionar las diferencias existentes entre los sistemas. Además, cumplen la función de representar las variaciones entre sistemas, a través del uso de la sintaxis del formato de serialización de datos YAML estándar, incluyendo listas y diccionarios. El usuario también tiene la posibilidad de definir variables en el playbook, un inventario, archivos o roles reutilizables y en la línea de comandos.

Nombres de variables en Ansible

La creación de nombres de variables válidos solo permite la inclusión de letras, números y guiones bajos. Las palabras clave de phyton o del playbook no pueden usarse como nombres de las variables.

Estos nombres tampoco pueden iniciar con un número, aunque sí con un guion bajo. Cabe aclarar que, a pesar de que en la mayoría de lenguajes de programación el inicio de una variable con un guion bajo significa que son variables de tipo privada, en Ansible estas variables (las ansible vars o variables) son iguales al resto.

Listar y registrar variables en Ansible

Se encargan de combinar un nombre de variables en Ansible con varios valores. Estos valores múltiples pueden ser almacenados como una lista detallada o entre corchetes [ ] separados mediante comas (,). Es posible definir estas variables de listas a través del uso de listas de YAML.

Además, respecto a las variables de listas de referencias, pueden utilizarse campos de tipo individual o bien específicos de esa lista. El elemento que aparece en primer lugar en una lista es el elemento 0, y el segundo es el elemento 1.

La creación de variables ansible registradas se puede realizar a partir de la salida de una tarea con la palabra clave de task: register. Estas variables registradas pueden utilizarse en cualquier labor posterior en el play.

🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴

Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semana

También existen las llamadas “variables simples“, que combinan un nombre de variable con un solo valor, y pueden definirse a través de la sintaxis del lenguaje estándar YAML. Tras definir estas variables, se usa la estructura de la plantilla Jinja2 para referirse a dichas variables simples.

Usos de las variables en Ansible

Una vez creadas, estas variables pueden utilizarse en los argumentos del module en Ansible, en la declaración condicional “when”, que se aplica a una sola tarea tras realizar la prueba. También puede hacer referencias a variables en sus playbooks a través de la plantillas del sistema Jinja2, que funcionan para habilitar expresiones dinámicas y acceso a las variables y que también permiten acceder y leer variables sobre otros hosts. Además, las variables pueden usarse en bucles o loops, como por ejemplo, cambiar la propiedad de diversos archivos y directorios a través del módulo de archivos.

Tipos de variables en Ansible

Las variables en Ansible pueden ser definidas en:

Variables en Playbook

Permiten realizar tareas o roles y se puede definir de forma directa en la línea, lo que ayuda a que el usuario pueda verlas cuando está leyendo el playbook mediante el uso de la sintaxis:

- hosts: webservers

vars:

http_port:80

Además, las variables en Ansible también pueden crearse durante la ejecución de un playbook, registrando el o los valores de retorno de una tarea como una nueva variable mediante el uso del argumento --extra-vars o bien -e.

Variables en un inventario

Se pueden establecer variables para cada host individual o definir variables compartidas para un grupo de hosts en su inventario. Además, el usuario también puede crear las variables en archivos separados. Las vars ansible de un inventario también pueden asignarse a un solo host que luego se usa en un playbook.

Variables en archivos y roles incluidos

El software de Ansible posibilita establecer variables en archivos de variables y roles que pueden ser reutilizados. En el primer caso, las variables de tipo confidencial se separan del Ansible playbook, lo que permite almacenarlo en un software de control de fuente o compartir playbooks, sin que esto implique un riesgo de exponer contraseñas u otros datos personales del usuario.

Variables de diccionario

Los diccionarios pueden guardar los datos en pares de clave valor y usualmente se utilizan con el objetivo de almacenar información relacionada, como, por ejemplo, los datos de identificación o de perfil del usuario. Las variables de mayor nivel de dificultad pueden definirse usando diccionarios YAML, que se encargan de asignar claves a valores. Además, para su referencia, puedes utilizar campos individuales y específicos de los diccionarios a través de la notación de paréntesis o puntos.

Precedencia de variables en Ansible

Ansible se encarga de cargar las variables ubicadas en el sistema y luego elige la variable que será aplicada en función de su precedencia. Estas variables se anularán siguiendo un determinado orden de prioridad. La organización de la precedencia de menor a mayor valor se establece de la siguiente forma:

  • Defaults del rol.
  • groups_vars.
  • hosts_vars.
  • Facts.
  • Play Vars.
  • Role vars.
  • Extra vars.

¿Cuál es el siguiente paso?

En este artículo has aprendido qué son las variables en Ansible, cómo nombrarlas, listarlas y registrarlas, así como sus usos y categorizaciones principales. Te animamos a dar el siguiente paso y continuar tu proceso de formación en esta u otras herramientas del formato de Ansible a través de nuestro DevOps & Cloud Computing Full Stack Bootcamp. En pocos meses aprenderás todo lo que necesitas sobre estos temas y te convertirás en un experto para destacar en el sector IT. Además, te podrás formar en metodologías de desarrollo de software que te permitirá mejorar y agilizar tus procesos.

Xoán Mallón

Senior DevOps Engineer en Zscaler & Coordinador del Bootcamp DevOps & Cloud Computing.

Posts más leídos

¡CONVOCATORIA ABIERTA!

DevOps & Cloud Computing

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado