Ansible - Comment garder ajout de nouvelles clés d'un dictionnaire lors de l'utilisation de set_fact module avec with_items?
Je veux ajouter des clés d'un dictionnaire lors de l'utilisation de set_fact avec with_items. C'est un petit POC qui va m'aider à remplir certains autres travaux. J'ai essayé de généraliser le POC, afin de supprimer tous les détails inutiles.
Quand j'ai exécuter le code suivant, il se montre un dictionnaire avec une seule touche qui correspond au dernier élément de la with_items. Il paraît que c'est la re-création d'un nouveau dictionnaire ou peut écraser un dictionnaire déjà existant pour chaque élément de la with_items. Je veux un seul dictionnaire avec toutes les clés.
Code:
---
- hosts: localhost
connection: local
vars:
some_value: 12345
dict: {}
tasks:
- set_fact: {
dict: "{
{{ item }}: {{ some_value }}
}"
}
with_items:
- 1
- 2
- 3
- debug: msg="{{ dict }}"
OriginalL'auteur Anand Patel | 2015-08-02
Vous devez vous connecter pour publier un commentaire.
Utiliser un filtre plugin.
Tout d'abord, créez un nouveau fichier dans votre ansible de la base de dir appelé
filter_plugins/makedict.py
.Maintenant créer une nouvelle fonction appelée "makedict" (ou ce que vous voulez) qui prend une valeur et une liste et retourne un nouveau dictionnaire dont les clés sont les éléments de la liste et la valeur est toujours la même.
Maintenant, vous pouvez utiliser le nouveau filtre dans le playbook pour atteindre le résultat souhaité:
Vous pouvez personnaliser l'emplacement du filtre un plugin à l'aide de la
filter_plugins
option dansansible.cfg
.OriginalL'auteur Ben Whaley
Cela peut aussi être fait sans avoir recours à des plugins, testé dans Ansible 2.2.
Sinon, cela peut être écrit sans complexe un paquebot avec un fichier include.
append_dict.yml:
De sortie:
Guillemets simples
'
autour de{{ some_value }}
sont nécessaires pour stocker la chaîne de valeurs de manière explicite.Cette syntaxe peut également être utilisée pour ajouter à partir d'un
dict
elementwise à l'aide dewith_dict
en se référant àitem.key
etitem.value
.Manipulations comme l'ajout de pré - et postfixes ou hachages peuvent être effectuées dans la même étape, par exemple
includes
OriginalL'auteur Andreas
cela ne semble plus fonctionner sur ansible 2.5
retourne uniquement la dernière valeur
{"dict":{"3": "some value"}}
Je suggère que vous pourriez faire ceci :
OriginalL'auteur Alexandre Assouad