Curso Ansible: Manejo de Variables
Las variables son una de las características más poderosas y flexibles de Ansible. Permiten personalizar y dinamizar las configuraciones y tareas que se ejecutan en los hosts gestionados. En esta entrada, exploraremos cómo definir, usar y gestionar variables en Ansible, proporcionando ejemplos detallados para clarificar cada concepto.
¿Qué son las Variables en Ansible?
Las variables en Ansible son nombres simbólicos que contienen datos o valores que se pueden utilizar en Playbooks, roles, tareas y plantillas. Estas variables permiten hacer que las configuraciones sean dinámicas y adaptables a diferentes entornos y necesidades.
Definición de Variables
Las variables se pueden definir en varios lugares y niveles, incluyendo archivos de inventario, Playbooks, roles y archivos de variables dedicados.
Definición en Playbooks
Las variables se pueden definir directamente en los Playbooks usando la sección vars.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
--- - name: Ejemplo de Playbook con variables hosts: webservers vars: http_port: 80 max_clients: 200 tasks: - name: Mostrar valor de http_port debug: msg: "El puerto HTTP es {{ http_port }}" - name: Mostrar valor de max_clients debug: msg: "El número máximo de clientes es {{ max_clients }}" |
Definición en Inventarios
Las variables también se pueden definir en archivos de inventario.
Formato INI
1 2 3 |
[webservers] web1.example.com http_port=80 max_clients=200 web2.example.com http_port=8080 max_clients=300 |
Formato YAML
1 2 3 4 5 6 7 8 9 10 |
all: children: webservers: hosts: web1.example.com: http_port: 80 max_clients: 200 web2.example.com: http_port: 8080 max_clients: 300 |
Archivos de Variables
Para mantener la organización, es común definir variables en archivos dedicados y luego incluir estos archivos en los Playbooks o roles.
1 2 3 |
# vars/main.yml http_port: 80 max_clients: 200 |
Uso de Variables
Las variables se utilizan en los Playbooks mediante la sintaxis de {{ variable_name }}.
1 2 3 4 5 6 |
- name: Configurar el archivo de configuración del servidor web template: src: httpd.conf.j2 dest: /etc/httpd/conf/httpd.conf vars: server_port: "{{ http_port }}" |
Precedencia de Variables
Ansible sigue una jerarquía de precedencia para las variables. Desde la más baja a la más alta precedencia, se tiene:
- Variables definidas en el archivo de configuración de Ansible (ansible.cfg).
- Variables definidas en el inventario estático.
- Variables de inventario definidas en grupo.
- Variables de inventario definidas en host.
- Variables definidas en Playbooks.
- Variables definidas en la línea de comandos (-e).
Ejemplo Completo
A continuación, se muestra un ejemplo completo que incluye la definición y el uso de variables en diferentes niveles.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# inventario.yaml all: children: webservers: hosts: web1.example.com: http_port: 80 web2.example.com: http_port: 8080 # playbook.yml --- - name: Ejemplo completo de variables hosts: webservers vars_files: - vars/main.yml tasks: - name: Mostrar valor de http_port desde el inventario debug: msg: "El puerto HTTP es {{ http_port }}" - name: Mostrar valor de max_clients desde vars/main.yml debug: msg: "El número máximo de clientes es {{ max_clients }}" # vars/main.yml max_clients: 200 |
Gestión de Variables Sensibles con Ansible Vault
Ansible Vault se utiliza para cifrar variables sensibles, como contraseñas o claves API, asegurando que se mantengan seguras.
Crear un archivo cifrado
1 |
ansible-vault create secret_vars.yml |
Editar un archivo cifrado
1 |
ansible-vault edit secret_vars.yml |
Usar variables cifradas en un Playbook
1 2 3 4 5 6 7 8 9 |
--- - name: Playbook con variables cifradas hosts: all vars_files: - secret_vars.yml tasks: - name: Mostrar valor de la variable secreta debug: msg: "El valor de la variable secreta es {{ secret_value }}" |
ENTRADAS RELACIONADAS CURSO ANSIBLE
- Curso Ansible: Qué es y para qué sirve
- Curso Ansible: Instalación, configuración inicial y ejemplo práctico básico
- Curso Ansible: Puertos de comunicación necesarios
- Curso Ansible: Playbooks conceptos básicos
- Curso Ansible: Manejo de Inventarios
- Curso Ansible: Manejo de Variables
- Curso Ansible: definición y uso de Roles
- Curso Ansible: qué son los Handlers
- Curso Ansible: Condicionales y bucles
- Curso Ansible: Gestión de secretos y credenciales con Ansible Vault
- Curso Ansible: Uso de roles de la comunidad con Ansible Galaxy
- Curso Ansible: Despliegue de aplicaciones en contenedores con Ansible
- Curso Ansible: Integración de Ansible con CI/CD pipelines
- Curso Ansible: Generar ficheros YAML
- Curso Ansible: Integración de Ansible con Terraform para gestionar Proxmox
- Curso Ansible: Provisioners de Ansible en Terraform
- Curso Ansible: Hecho o Fact
- Curso Ansible: Optimización y buenas prácticas
OTRAS ENTRADAS RELACIONADAS ANSIBLE
- Ansible: Conceptos básicos
- Ansible: Comandos básicos
- Instalar Ansible en Centos 7
- Ansible: Gestión básica máquinas virtuales Proxmox
- MacOS: Instalar Podman y Ansible
- Docker Swarm: Instalar Ansible AWX
- Ansible: Validar ficheros YAML
- Ansible: Instalar SQL Server 2019 en Linux
- Ansible: Crear página web WordPress
- Ansible: Instalación servidores web
- Ansible: Gestión de máquina Windows
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?