itération à l'aide de with_items et vous inscrire
À la recherche de l'aide sur un problème que j'ai eu du mal pendant quelques heures. Je veux parcourir une liste, exécutez une commande, enregistrer la sortie pour chaque commande, puis itérer avec debug sur chaque unique des registres de {{ someregister }}.stdout
Par exemple, le code suivant va cracher "msg": "1" et "msg": "2"
---
- hosts: localhost
gather_facts: false
vars:
numbers:
- name: "first"
int: "1"
- name: "second"
int: "2"
tasks:
- name: Register output
command: "/bin/echo {{ item.int }}"
register: result
with_items: "{{ numbers }}"
- debug: msg={{ item.stdout }}
with_items: "{{ result.results }}"
Si toutefois, j'ai essayer de capturer la sortie d'une commande dans un registre variable qui est nommé à l'aide with_list, je vais avoir du mal à accéder à la liste ou les éléments à l'intérieur. Par exemple, en modifiant le code légèrement à:
---
- hosts: localhost
gather_facts: false
vars:
numbers:
- name: "first"
int: "1"
- name: "second"
int: "2"
tasks:
- name: Register output
command: "/bin/echo {{ item.int }}"
register: "{{ item.name }}"
with_items: "{{ numbers }}"
- debug: var={{ item.name.stdout }}
with_items: "{{ numbers }}"
Me donne:
TASK [debug]
> ******************************************************************* fatal: [localhost]: FAILED! => {"failed": true, "msg": "'unicode
> object' has no attribute 'stdout'"}
Est-il pas possible de nommer dynamiquement le registre de la sortie d'une commande qui peut être appelé plus tard dans le jeu? Je voudrais que chaque itération de la commande et de son registre nom pour être accessible de manière unique, l'e.g, compte tenu de la dernier exemple, je m'attends à être des variables enregistrées appelé la "première" et "seconde", mais il n'y en a pas.
Enlever la with_items du débogage couplet, et juste en définissant explicitement le var ou d'un message à l'aide de la première.stdout retourne "undefined".
Ansible version est 2.0.2.0 sur Centos 7_2.
Merci d'avance.
OriginalL'auteur Rowley | 2016-06-20
Vous devez vous connecter pour publier un commentaire.
OK, donc j'ai trouvé un post sur stackoverflow qui m'a aidé à mieux comprendre ce qui se passe ici et comment accéder aux éléments dans le résultat.résultats.
Le code résultant ai fini avec:
Qui m'a donné le résultat souhaité:
OriginalL'auteur Rowley
Je ne suis pas sûr si je comprends correctement à la question, mais peut-être cela peut vous aider:
Veuillez noter que Ansible s'imprime chaque élément et la msg deux - donc, vous devez regarder attentivement pour une ligne qui ressemble à
"msg": "2"
.OriginalL'auteur Amit