Integración de filtros personalizados en playbooks de Ansible
Ahora que has aprendido cómo definir filtros personalizados de Jinja2, es hora de integrarlos en tus playbooks de Ansible. Esta sección te guiará a través del proceso de uso de tus filtros personalizados en tu código de Ansible.
Carga de filtros personalizados en Ansible
Para utilizar tus filtros personalizados de Jinja2 en un playbook de Ansible, debes asegurarte de que Ansible pueda localizarlos y cargarlos. Ansible busca filtros personalizados en las siguientes ubicaciones:
- El directorio
filters/
relativo al archivo del playbook.
- El directorio
library/
relativo al archivo del playbook.
- Los directorios especificados en la variable de entorno
ANSIBLE_FILTER_PLUGINS
.
Supongamos que has creado tu filtro personalizado to_comma_separated
en el archivo filters/custom_filters.py
. Para utilizar este filtro en tu playbook, puedes agregar el siguiente código al comienzo de tu playbook:
---
- hosts: all
gather_facts: false
vars:
webservers: ["web01", "web02", "web03"]
tasks:
- name: Load custom filters
ansible.builtin.include_vars:
file: filters/custom_filters.py
name: custom_filters
- name: Print a comma-separated list of webservers
debug:
msg: "{{ webservers | to_comma_separated }}"
En este ejemplo, utilizamos el módulo include_vars
para cargar el archivo custom_filters.py
, que contiene nuestro filtro personalizado to_comma_separated
. Una vez que el filtro está cargado, podemos usarlo en las tareas de nuestro playbook.
Organización de filtros personalizados
A medida que tu proyecto de Ansible crece, puede resultar útil organizar tus filtros personalizados en archivos o directorios separados. Esto puede ayudar a mantener tu código limpio y fácil de mantener.
Por ejemplo, puedes crear un directorio filters/
en tu proyecto de Ansible y colocar allí tus archivos de filtros personalizados. Luego, puedes cargar los filtros utilizando el módulo include_vars
, como se muestra en el ejemplo anterior.
my-ansible-project/
├── filters/
│ └── custom_filters.py
├── playbooks/
│ └── my-playbook.yml
└── inventory/
└── hosts
Al organizar tus filtros personalizados de esta manera, puedes reutilizarlos fácilmente en múltiples playbooks y asegurarte de que tu código de Ansible siga siendo modular y escalable.
Recuerda, la clave para integrar eficazmente filtros personalizados de Jinja2 en playbooks de Ansible es asegurarte de que Ansible pueda localizarlos y cargarlos correctamente. Siguiendo las mejores prácticas descritas en esta sección, puedes crear playbooks de Ansible más potentes y flexibles que se adapten a tus necesidades específicas.