Ansible afficher le contenu d'une variable
Si j'ai ces 2 tâche
- name: Replace ServerIP in config_file on OTHER NODES
set_fact:
variable: "{{hostvars.localhost.new_ips.results}}"
- name: Display variable
debug: var=variable
Le résultat de qui sont:
TASK: [Display variable] *********************************************************
ok: [vm2] => {
"variable": [
{
"changed": true,
"cmd": "echo \"11.11.4.74\"",
"delta": "0:00:00.002244",
"end": "2014-08-26 02:34:22.880447",
"invocation": {
"module_args": "echo \"11.11.4.74\"",
"module_name": "shell"
},
"item": "74",
"rc": 0,
"start": "2014-08-26 02:34:22.878203",
"stderr": "",
"stdout": "11.11.4.74"
},
{
"changed": true,
"cmd": "echo \"11.11.4.138\"",
"delta": "0:00:00.002156",
"end": "2014-08-26 02:34:22.958337",
"invocation": {
"module_args": "echo \"11.11.4.138\"",
"module_name": "shell"
},
"item": "138",
"rc": 0,
"start": "2014-08-26 02:34:22.956181",
"stderr": "",
"stdout": "11.11.4.138"
}
]
}
ok: [vm1] => {
"variable": [
{
"changed": true,
"cmd": "echo \"11.11.4.74\"",
"delta": "0:00:00.002244",
"end": "2014-08-26 02:34:22.880447",
"invocation": {
"module_args": "echo \"11.11.4.74\"",
"module_name": "shell"
},
"item": "74",
"rc": 0,
"start": "2014-08-26 02:34:22.878203",
"stderr": "",
"stdout": "11.11.4.74"
},
{
"changed": true,
"cmd": "echo \"11.11.4.138\"",
"delta": "0:00:00.002156",
"end": "2014-08-26 02:34:22.958337",
"invocation": {
"module_args": "echo \"11.11.4.138\"",
"module_name": "shell"
},
"item": "138",
"rc": 0,
"start": "2014-08-26 02:34:22.956181",
"stderr": "",
"stdout": "11.11.4.138"
}
]
}
Alors comment puis-je accéder à la sortie standard (stdout) de la partie variable. Veuillez noter, j'ai juste besoin de la stdout partie de cette variable.e 11.11.4.74 et 11.11.4.138 (dans une boucle de préférence)
Essayez
Si je fais qqch comme variable.stdout j'obtiens l'erreur suivante Une ou plusieurs variables indéfinies: 'dict objet" n'a pas d'attribut 'stdout' . Si je fais comme vous avez dit, puis je reçois l'erreur: Un ou plusieurs variables indéfinies: dict objet n'a pas d'élément 0
Hé, attendez: new_ips1: '{{variable.résultats.0.stdout}}' fonctionne, mais les magasins de la première entrée seulement! Est-il d'une certaine manière pour parcourir la liste et l'enregistrer comme '{{variable.résultats.{{i}}.stdout}}'
Peut-être {{variable.les résultats de[i].stdout}}
ou
variable.0.stdout
?Si je fais qqch comme variable.stdout j'obtiens l'erreur suivante Une ou plusieurs variables indéfinies: 'dict objet" n'a pas d'attribut 'stdout' . Si je fais comme vous avez dit, puis je reçois l'erreur: Un ou plusieurs variables indéfinies: dict objet n'a pas d'élément 0
Hé, attendez: new_ips1: '{{variable.résultats.0.stdout}}' fonctionne, mais les magasins de la première entrée seulement! Est-il d'une certaine manière pour parcourir la liste et l'enregistrer comme '{{variable.résultats.{{i}}.stdout}}'
Peut-être {{variable.les résultats de[i].stdout}}
ou
{{variables["results"]["i"]["stdout"]}}
- vous ne savez pas comment Jinja interpolation fonctionne iciOriginalL'auteur Khan | 2014-08-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder individuellement
et
{{ variable[1].stdout }}
OU de l'utilisation de la boucle
OriginalL'auteur Ramesh Raithatha