我正在尝试从ansible的主机列表中生成一对主机 我有以下库存
[webs]
test
test2
test3
test4
test5
如何生成主机对,例如test和test2,test3和test4,test5和test(从第一次开始重复)
我尝试了批处理,切片和with_items等过滤器,但似乎无法正常工作。
有没有一种简单的方法可以在ansible中生成这些对?
答案 0 :(得分:1)
您可以进一步优化。
tasks:
- set_fact: total_hosts={{groups['webs'] | length }}
- debug: msg={{groups['webs'] | slice(total_hosts | int // 2) | list}}
when: "{{total_hosts |int is divisibleby 2}}"
- debug: msg={{groups['webs'] | slice(total_hosts | int // 2 + 1, fill_with=groups['webs'][0]) | list}}
when: "{{total_hosts |int is not divisibleby 2}}"
输出
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": [
[
"test",
"test2"
],
[
"test3",
"test4"
],
[
"test5",
"test"
]
]
}