假设我有一个
的默认/ main.yml文件---
my_vars:
- var1: value1
- var2: value2
如何编写我的任务来输出我的变量?
- debug: msg="The value of {{item.key}} is {{ item.value }}"
with_items:
- "What to put here???"
答案 0 :(得分:-1)
您似乎在询问X,但在您的示例中说明了Y.我的意思是可以迭代的键/值对列表如下所示:
my_vars:
- var1: value1
var2: value2
或者甚至喜欢这样:
my_vars:
var1: value1
var2: value2
要处理你的词典列表,这里有一个例子。我添加了一个变量来显示字典是如何聚集的。
---
- hosts: localhost
connection: local
vars:
my_var:
- var1: value1
varX: valueY
- var2: value2
tasks:
- debug: var=item
with_items: "{{my_var}}"
- debug: var=item.var1
when: "'var1' in item"
with_items: "{{my_var}}"
输出:
TASK [debug] ***********************************************************************************************************
ok: [localhost] => (item={'varX': 'valueY', 'var1': 'value1'}) => {
"item": {
"var1": "value1",
"varX": "valueY"
}
}
ok: [localhost] => (item={'var2': 'value2'}) => {
"item": {
"var2": "value2"
}
}
TASK [debug] ***********************************************************************************************************
ok: [localhost] => (item={'varX': 'valueY', 'var1': 'value1'}) => {
"item": {
"var1": "value1",
"varX": "valueY"
},
"item.var1": "value1"
}
skipping: [localhost] => (item={'var2': 'value2'})
同样,您可以在同一次迭代中看到' clumping',var1和varX show。 Ansible并没有很好地处理深度嵌套问题。 Ansible可以处理dicts列表的情况是指他们指的是类似的东西:
my_vars:
- name: bob
legs: 4
type: cow
- name: alice
legs: 2
type: bird
然后,您可以通过两种方式迭代它 - 使用with_items或with_subelements。
如果你真正拥有列表中的hetrogenous键并希望一次迭代一次,你将不得不使用嵌套包含(yuck)。您还可以构建过滤器。我从来没有做过前者,只做过一次。