lecture json comme variable dans ansible
Je suis nouveau sur ansible et je vais avoir un problème de lecture d'une valeur de fichier json dans ansible rôle. ma variable a une valeur comme suit:
{
"queue": {
"first": {
"car": "bmw",
"year": "1990",
"model": "x3",
"color": "blue"
},
"second": {
"car": "bmw",
"year": "2000",
"model": "318",
"color": "red"
}
}
}
Je suis en train d'imprimer la couleur a de valeur que pour la comparer avec une autre variable. J'ai utilisé with_dict
pour effectuer une itération sur l'objet json (stocké dans la variable appelée jsonVar) comme suit:
- name: test loop
with_dict: "{{jsonVar}}"
shell: |
if echo "blue" | grep -q "${{item.value.color}}" ; then
echo "success"
jusqu'à présent il n'y a pas de chance dans l'obtention de la comparaison de la couleur de la valeur de json "bleu" de l'instruction if. Je me demandais si je fais quelque chose de mal?
merci à l'avance!
source d'informationauteur tkyass
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lire un fichier json à l'aide d'une recherche de plugin appelé
file
et le passer à lafrom_json
jinja2 filtre. Vous avez aussi eu erreur dans lawith_dict
boucle, puisque vous avez à boucle sur lejsonVar['queue']
pas seulementjsonVar
. Voici un code qui fonctionne:Vous pouvez utiliser le | json_query filtre.
http://docs.ansible.com/ansible/playbooks_filters.html#json-query-filter
Mais assurez-vous que le fichier que vous saisissez est également dans le format approprié,si non, alors vous pouvez utiliser deux filtres, l'un des premiers à en convertir dans un filtre approprié et une seconde pour effectuer la requête json.
ex:-
{{ variable_name | from_json | json_query('')}}
Dans votre cas, je pense que cela pourrait aider:
Mais de prendre note des exigences comme Ansible version