想象一下,我有以下库存
[myservers]
127.0.0.1
192.168.0.6
在我的vars文件中,以下内容:
interesting_things:
- name: alice
port: 8080
- name: bob
port: 8181
如何产生以下结果?
127.0.0.1[8080],127.0.0.1[8181],192.168.0.6[8080],192.168.0.6[8181]
我试着买笛卡尔产品,但是没有出现:
debug: msg="{{ lookup('cartesian', groups['myservers'], interesting_things | map(attribute='port')) }}"
这给了我以下内容,但我无法弄清楚如何进一步。
{
"msg": [
[
"127.0.0.1",
8080
],
[
"127.0.0.1",
8181
],
[
"192.168.0.6",
8080
],
[
"192.168.0.6",
8181
]
]
}
答案 0 :(得分:1)
以你已有的为基础:
- name:
set_fact:
my_list: "{{ my_list|default([]) + [my_element] }}"
vars:
my_element: "{{ item[0] }}[{{ item[1] }}]"
with_items:
- "{{ lookup('cartesian', groups['myservers'], interesting_things | map(attribute='port')) }}"
- debug:
msg: "{{ my_list|join(',') }}"
结果:
"msg": "127.0.0.1[8080],127.0.0.1[8181],192.168.0.6[8080],192.168.0.6[8181]"