我有多台服务器,每台服务器上的库存中都有多个容器。一些服务器可能在一个组中,一些在另一个组中,我想为每个容器指定url变量。我的清单:
我可以像with_dict一样遍历这些URL吗?如果是,又是如何实现的?
我的清单:
all:
hosts:
<1st-server-ip>:
ansible_host: <IP>
<2nd-server-ip>:
ansible_host: <IP>
<3rd-server-ip>:
ansible_host: <IP>
children:
<1st-GROUP>:
hosts:
<1st-server-ip>:
<containers>:
<app-1>:
url: '<URL>'
<app-2>:
url: '<URL>'
<app-3>:
url: '<URL>'
<2nd-GROUP>:
hosts:
<2nd-server-ip>:
<containers>:
<app-4>:
url: '<URL>'
<app-5>:
url: '<URL>'
<3rd-GROUP>:
hosts:
<3rd-server-ip>:
<containers>:
<app-6>:
url: '<URL>'
<app-7>:
url: '<URL>'
<app-8>:
url: '<URL>'发布于 2019-05-30 07:56:12
json_query能够将结构简化为可以用include_tasks迭代的列表列表。
下面的剧本
- include_tasks: loop-url.yml
loop: "{{ all.children|json_query('*.hosts.*.containers[]') }}"
loop_control:
loop_var: outer_item使用包含的任务
> cat loop-url.yml
- debug:
msg: "key: {{ item.key }} value: {{ item.value.url }}"
loop: "{{ outer_item|dict2items }}"提供(grep msg):
"msg": "key: app-7 value: URL"
"msg": "key: app-6 value: URL"
"msg": "key: app-8 value: URL"
"msg": "key: app-5 value: URL"
"msg": "key: app-4 value: URL"
"msg": "key: app-3 value: URL"
"msg": "key: app-2 value: URL"
"msg": "key: app-1 value: URL"(标签标记<>已从数据中删除)
https://stackoverflow.com/questions/56362011
复制相似问题