J'ai la variable suivante chargée via include_vars
:
access:
username-foo:
- path: /
permissions: rwX
recursive: true
username-bar:
- path: /
permissions: rX
- path: /css
permissions: rwX
recursive: true
- path: /data
permissions: rX
- path: /data/reviews.yml
permissions: rw
- path: /js
permissions: rX
- path: /js/*.js
permissions: rw
Je souhaite alimenter ces informations à la shell
commande afin de définir les autorisations appropriées.
J'ai essayé quelques techniques à partir d'ici: http://docs.ansible.com/playbooks_loops.html mais je n'ai pas réussi à trouver une solution de travail.
Est-il possible d'itérer cette structure? Sinon, comment puis-je le restructurer afin de le faire fonctionner? Est-il possible de le faire sans enfreindre la règle DRY (par exemple, inclure le nom d'utilisateur dans chaque enregistrement)?
shell
module parce que je dois faire une ACL récursive et qui n'est pas prise en charge par leacl
module.shell
c'est votre meilleur pari avec les ACL et la récursivité.recursive
dans mon exemple? Lorsque j'essaie d'y accéder et qu'il est manquant, Ansible arrêtera l'exécution du playbook et lèvera une exception. Je préfère ne pas ajouterrecursive: false
à chaque enregistrement.{{ some_variable | default() }}
. Donc, dans ce cas:{{ item.1.recursive | default(false) }}
Ceci est un bon exemple de sortie que vous pouvez essayer vous-même. Créez un nouveau livre de jeu appelé
iteration_loop.yml
:Ensuite, exécutez le playbook comme ceci:
ansible-playbook -i '172.16.222.131,' iteration_loop.yml
et la sortie devrait vous indiquer comment accéder aux éléments:
la source
En supposant cela
dict={a:[1,2,3],b:[1,2]}
et ainsi de suite:Maintenant
flattened == [1,2,3,1,2]
la source
Je reformaterai vos vars au format ci-dessous:
puis mon playbook comme ci-dessous:
la source