Ansible: loop, subelements, dictionnary
Rédigé par uTux Aucun commentaireArticle pense-bête. J'écris un petit rôle pour configurer firewalld, en gros je veux spécifier quelles interfaces et quels services il faut ajouter dans les zones. Mon idée c'est de définir tout ça dans un dictionnaire dans le playbook, et ensuite de récupérer les élements et sous-élements dans le rôle.
Voici ce que ça donne:
# install.yml
- hosts: nas
roles:
- nfs-server
- firewalld
vars:
firewalld_zones:
- zone: internal
interfaces:
- eth0
services:
- mountd
- nfs
- rpc-bind
- name: Define zones for interfaces
firewalld:
zone: "{{ item.0.zone }}"
permanent: true
immediate: true
interface: "{{ item.1 }}"
state: enabled
with_subelements:
- "{{ firewalld_zones }}"
- interfaces
- name: Allow services for zones
firewalld:
zone: "{{ item.0.zone }}"
permanent: true
immediate: true
service: "{{ item.1 }}"
state: enabled
with_subelements:
- "{{ firewalld_zones }}"
- services
Mouais. C'est quand même loin d'être clair ou évident. Mais c'est le seul moyen que j'ai trouvé pour le moment. Si quelqu'un connaît une méthode plus propre/lisible je suis preneur.