Asignación de variables a grupos
Ansible te permite asignar variables a grupos en el archivo de inventario. Estas variables se pueden utilizar en playbooks y plantillas, lo que hace que tu código de Ansible sea más flexible y reutilizable.
Edita el archivo inventory
:
nano /home/labex/project/inventory
Actualiza el contenido a:
[webservers]
localhost ansible_connection=local
[production:children]
webservers
[webservers:vars]
http_port=80
Esto asigna la variable http_port
con un valor de 80 a todos los hosts del grupo webservers
. El sufijo :vars
se utiliza para definir variables para un grupo.
Guarda y sal del editor.
Ahora, vamos a crear un playbook simple para mostrar esta variable. Un playbook es un archivo YAML que define un conjunto de tareas a ejecutar en hosts. Crea un nuevo archivo llamado show_http_port.yml
:
nano /home/labex/project/show_http_port.yml
Agrega el siguiente contenido:
---
- name: Show HTTP Port
hosts: webservers
tasks:
- name: Display HTTP Port
debug:
msg: "The HTTP port is {{ http_port }}"
Este playbook:
- Apunta al grupo
webservers
- Tiene una única tarea que utiliza el módulo
debug
para mostrar un mensaje
- Utiliza la sintaxis
{{ http_port }}
para hacer referencia a la variable que definimos en el inventario
Guarda y sal del editor.
Ejecuta el playbook:
ansible-playbook -i inventory show_http_port.yml
Deberías ver una salida que muestra el valor del puerto HTTP:
PLAY [Show HTTP Port] ********************************************************
TASK [Gathering Facts] ********************************************************
ok: [localhost]
TASK [Display HTTP Port] ******************************************************
ok: [localhost] => {
"msg": "The HTTP port is 80"
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Esto demuestra que la variable que definimos en el inventario es accesible en nuestro playbook.