使用 multi-ter group_vars 的 Ansible 循环
Ansible loop using multi-ter group_vars
我正在尝试使用 group_vars 在 ansible 中动态创建模板,但似乎无法使嵌套循环正常工作。
在group_vars,我有
my_environment:
serv1:
foo: 2
bar: 3
baz: 3
serv2:
foo: 1
我正在尝试创建以下结构:
/serv1/foo1
/serv1/foo2
/serv1/bar1
/serv1/bar2
/serv1/bar3
/serv1/baz1
/serv1/baz2
/serv1/baz3
/serv2/foo1
以上创建后,我想将模板文件放入每个目录中,因此最终结果将是:
/serv1/bar1/template
和
/serv2/foo1/template
等等
我的剧本:
- debug: msg="{{ ce }}"
with_list:
- "{{ item.value }}"
loop_control:
loop_var: ce
以上输出:
ok: [localhost] => (item=None) => {
"ce": {
"bar": 3,
"baz": 3,
"foo": 2
},
"msg": {
"bar": 3,
"baz": 3,
"foo": 2
}
}
问题是,如何使用foo
的值迭代2
次来创建结构?每当我使用 include: with_dict
或 include: with_list
时,我总是得到上面的列表?我找不到向下遍历的方法...
最好的方法是编写您自己的查找插件,它将根据您的输入形成所需的路径列表。
使用标准查找(循环),您可以这样做:
x.yml:
- hosts: localhost
vars:
my_environment:
serv1:
foo: 2
bar: 3
baz: 3
serv2:
foo: 1
tasks:
- include: x2.yml
with_dict: "{{ my_environment }}"
loop_control:
loop_var: my_server
x2.yml:
- include: x3.yml
with_dict: "{{ my_server.value }}"
loop_control:
loop_var: my_param
x3.yml:
- debug: var=item
with_sequence: end={{ my_param.value }} format=/{{ my_server.key }}/{{ my_param.key }}%1d/template
debug
在 x3.yml 你可以用 template
替换并使用 {{ item }}
作为 dest
.
我正在尝试使用 group_vars 在 ansible 中动态创建模板,但似乎无法使嵌套循环正常工作。
在group_vars,我有
my_environment:
serv1:
foo: 2
bar: 3
baz: 3
serv2:
foo: 1
我正在尝试创建以下结构:
/serv1/foo1
/serv1/foo2
/serv1/bar1
/serv1/bar2
/serv1/bar3
/serv1/baz1
/serv1/baz2
/serv1/baz3
/serv2/foo1
以上创建后,我想将模板文件放入每个目录中,因此最终结果将是:
/serv1/bar1/template
和
/serv2/foo1/template
等等
我的剧本:
- debug: msg="{{ ce }}"
with_list:
- "{{ item.value }}"
loop_control:
loop_var: ce
以上输出:
ok: [localhost] => (item=None) => {
"ce": {
"bar": 3,
"baz": 3,
"foo": 2
},
"msg": {
"bar": 3,
"baz": 3,
"foo": 2
}
}
问题是,如何使用foo
的值迭代2
次来创建结构?每当我使用 include: with_dict
或 include: with_list
时,我总是得到上面的列表?我找不到向下遍历的方法...
最好的方法是编写您自己的查找插件,它将根据您的输入形成所需的路径列表。
使用标准查找(循环),您可以这样做:
x.yml:
- hosts: localhost
vars:
my_environment:
serv1:
foo: 2
bar: 3
baz: 3
serv2:
foo: 1
tasks:
- include: x2.yml
with_dict: "{{ my_environment }}"
loop_control:
loop_var: my_server
x2.yml:
- include: x3.yml
with_dict: "{{ my_server.value }}"
loop_control:
loop_var: my_param
x3.yml:
- debug: var=item
with_sequence: end={{ my_param.value }} format=/{{ my_server.key }}/{{ my_param.key }}%1d/template
debug
在 x3.yml 你可以用 template
替换并使用 {{ item }}
作为 dest
.