Intégrer des filtres personnalisés dans les playbooks Ansible
Maintenant que vous avez appris à définir des filtres Jinja2 personnalisés, il est temps de les intégrer dans vos playbooks Ansible. Cette section vous guidera tout au long du processus d'utilisation de vos filtres personnalisés dans votre code Ansible.
Charger des filtres personnalisés dans Ansible
Pour utiliser vos filtres Jinja2 personnalisés dans un playbook Ansible, vous devez vous assurer qu'Ansible peut les localiser et les charger. Ansible recherche les filtres personnalisés dans les emplacements suivants :
- Le répertoire
filters/
relatif au fichier de playbook.
- Le répertoire
library/
relatif au fichier de playbook.
- Les répertoires spécifiés dans la variable d'environnement
ANSIBLE_FILTER_PLUGINS
.
Supposons que vous avez créé votre filtre personnalisé to_comma_separated
dans le fichier filters/custom_filters.py
. Pour utiliser ce filtre dans votre playbook, vous pouvez ajouter le code suivant au début de votre 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 }}"
Dans cet exemple, nous utilisons le module include_vars
pour charger le fichier custom_filters.py
, qui contient notre filtre personnalisé to_comma_separated
. Une fois le filtre chargé, nous pouvons l'utiliser dans les tâches de notre playbook.
Organiser les filtres personnalisés
Au fur et à mesure que votre projet Ansible grandit, vous pourriez trouver utile d'organiser vos filtres personnalisés dans des fichiers ou des répertoires séparés. Cela peut aider à maintenir votre code propre et facilement maintenable.
Par exemple, vous pouvez créer un répertoire filters/
dans votre projet Ansible et y placer vos fichiers de filtres personnalisés. Ensuite, vous pouvez charger les filtres à l'aide du module include_vars
, comme montré dans l'exemple précédent.
my-ansible-project/
├── filters/
│ └── custom_filters.py
├── playbooks/
│ └── my-playbook.yml
└── inventory/
└── hosts
En organisant vos filtres personnalisés de cette manière, vous pouvez facilement les réutiliser dans plusieurs playbooks et vous assurer que votre code Ansible reste modulaire et évolutif.
N'oubliez pas que la clé pour intégrer efficacement des filtres Jinja2 personnalisés dans les playbooks Ansible est de vous assurer qu'Ansible peut les localiser et les charger correctement. En suivant les meilleures pratiques décrites dans cette section, vous pouvez créer des playbooks Ansible plus puissants et flexibles qui répondent à vos besoins spécifiques.