En este módulo, aprenderemos sobre las variables y los hechos en Ansible. Las variables y los hechos son componentes esenciales que permiten la personalización y la flexibilidad en los playbooks de Ansible. Vamos a desglosar estos conceptos y proporcionar ejemplos prácticos para que puedas entender cómo utilizarlos eficazmente.
¿Qué son las Variables en Ansible?
Las variables en Ansible son valores que puedes definir y reutilizar en tus playbooks. Estas variables pueden ser utilizadas para almacenar información que puede cambiar, como nombres de servidores, rutas de archivos, configuraciones de red, etc.
Definiendo Variables
Las variables en Ansible se pueden definir en varios lugares:
- En el playbook: Directamente dentro del archivo YAML.
- En archivos de inventario: Asociadas a hosts o grupos de hosts.
- En archivos de variables: Archivos YAML separados que se incluyen en los playbooks.
- En la línea de comandos: Pasadas como argumentos al ejecutar el playbook.
Ejemplo de Variables en un Playbook
--- - name: Ejemplo de uso de variables hosts: localhost vars: saludo: "Hola" nombre: "Mundo" tasks: - name: Mostrar mensaje debug: msg: "{{ saludo }}, {{ nombre }}!"
En este ejemplo:
- Definimos dos variables
saludo
ynombre
. - Utilizamos la tarea
debug
para mostrar un mensaje que incluye estas variables.
Tipos de Variables
Ansible soporta varios tipos de variables:
- Strings: Cadenas de texto.
- Números: Enteros y flotantes.
- Listas: Listas de valores.
- Diccionarios: Pares clave-valor.
Ejemplo de Diferentes Tipos de Variables
--- - name: Ejemplo de diferentes tipos de variables hosts: localhost vars: cadena: "Texto" numero: 42 lista: ["uno", "dos", "tres"] diccionario: clave1: "valor1" clave2: "valor2" tasks: - name: Mostrar variables debug: msg: "Cadena: {{ cadena }}, Número: {{ numero }}, Lista: {{ lista }}, Diccionario: {{ diccionario }}"
¿Qué son los Hechos en Ansible?
Los hechos (facts) en Ansible son datos recopilados automáticamente sobre los hosts gestionados. Estos datos incluyen información sobre el sistema operativo, la red, el hardware, etc. Los hechos se recopilan utilizando el módulo setup
.
Recopilación de Hechos
Por defecto, Ansible recopila hechos al inicio de la ejecución de un playbook. Puedes desactivar esta recopilación automática si no la necesitas.
Ejemplo de Uso de Hechos
--- - name: Ejemplo de uso de hechos hosts: localhost tasks: - name: Mostrar información del sistema debug: var: ansible_facts
En este ejemplo:
- Utilizamos la tarea
debug
para mostrar todos los hechos recopilados sobre el hostlocalhost
.
Accediendo a Hechos Específicos
Puedes acceder a hechos específicos utilizando su nombre. Por ejemplo, para obtener la dirección IP del host:
--- - name: Obtener dirección IP hosts: localhost tasks: - name: Mostrar dirección IP debug: msg: "La dirección IP es {{ ansible_facts['ansible_default_ipv4']['address'] }}"
Ejercicio Práctico
Ejercicio 1: Definir y Usar Variables
- Crea un playbook llamado
variables.yml
. - Define las siguientes variables:
usuario
: "admin"puerto
: 8080
- Crea una tarea que muestre un mensaje utilizando estas variables.
Solución:
--- - name: Ejercicio de variables hosts: localhost vars: usuario: "admin" puerto: 8080 tasks: - name: Mostrar mensaje debug: msg: "El usuario es {{ usuario }} y el puerto es {{ puerto }}"
Ejercicio 2: Usar Hechos para Mostrar Información del Sistema
- Crea un playbook llamado
hechos.yml
. - Crea una tarea que muestre la versión del sistema operativo del host.
Solución:
--- - name: Ejercicio de hechos hosts: localhost tasks: - name: Mostrar versión del sistema operativo debug: msg: "La versión del sistema operativo es {{ ansible_facts['ansible_distribution_version'] }}"
Conclusión
En esta sección, hemos aprendido sobre las variables y los hechos en Ansible. Las variables permiten la personalización y reutilización de valores en los playbooks, mientras que los hechos proporcionan información detallada sobre los hosts gestionados. Estos conceptos son fundamentales para escribir playbooks eficientes y flexibles.
En el próximo módulo, profundizaremos en los condicionales y bucles, que nos permitirán controlar el flujo de ejecución de nuestras tareas en los playbooks.
Ansible: De Principiante a Avanzado
Módulo 1: Introducción a Ansible
Módulo 2: Conceptos Básicos de Ansible
Módulo 3: Playbooks
- Introducción a los Playbooks
- Escribiendo tu Primer Playbook
- Estructura del Playbook
- Variables y Hechos
- Condicionales y Bucles
Módulo 4: Roles
Módulo 5: Técnicas Avanzadas de Playbook
Módulo 6: Ansible Galaxy
Módulo 7: Ansible Tower
- Introducción a Ansible Tower
- Instalando Ansible Tower
- Usando Ansible Tower
- Gestionando Proyectos e Inventarios
Módulo 8: Ansible para DevOps
Módulo 9: Mejores Prácticas de Ansible
- Organización del Código
- Mejores Prácticas de Seguridad
- Ajuste de Rendimiento
- Pruebas de Código Ansible