我处于一种奇怪的情况,我无法缠住我的头。
我收集了一些具有某些属性的水果, 同时,我正在注册一个变量,然后尝试在第二个任务中同时打印它们。
如果我为每个水果运行序列化的任务1和2,我的问题就会解决,但是,!第一项任务是在继续执行任务2之前将所有水果收集为对象列表。
vars:
fruit:
- name: banana
color: yellow
- name: apple
color: green
- name: tomato:
color: red
tasks:
- name: Task 1 - Get my hostname
shell: "hostname -f"
register: variable
- name: Task 2 - print my hostname and the fruit
debug:
msg: "hostname.stdout has value {{ variable.stdout }}, the fruits got is: {{ fruit.name }}"
现在,我不确定在上述情况下应该选择哪种“ with_”循环。
fruit是字典,键值对。 “ variable.stdout”不确定这是哪种对象类型,因为我们有3个水果对象,所以.stdout现在包含我们在此处运行的shell命令的3个结果:
ok: [localhost] => {
"variable": {
"changed": true,
"cmd": "hostname -f",
"delta": "0:00:00.008597",
"end": "2018-10-27 13:37:00.123456",
"rc": 0,
"end": "2018-10-27 13:37:01.123456",
"stderr": "",
"stderr_lines": [],
"stdout": "pinapplepie.my.lan.domain",
"stdout_lines": [
"pinapplepie.my.lan.domain",
]
}
}
感谢您的宝贵时间。 非常感谢。
答案 0 :(得分:0)
您可以像这样进行迭代(请注意,水果不是字典,而是字典列表):
---
- name: test
hosts: localhost
vars:
fruit:
- name: banana
color: yellow
- name: apple
color: green
- name: tomato
color: red
tasks:
- name: Task 1 - Get my hostname
shell: "hostname -f"
register: variable
- name: Task 2 - print my hostname and the fruit
debug:
msg: "hostname.stdout has value {{ variable.stdout }}, the fruits got is: {{ item.name }}"
with_items: "{{ fruit }}"