繁体   English   中英

使用jinja2从列表生成对(可翻译)

[英]Generate pairs from list using jinja2 (ansible)

我正在尝试根据清单中的主机列表生成一对主机

[webs]
test
test2
test3
test4
test5

如何生成主机对,例如test和test2,test3和test4,test5和test(从第一个重复开始)

我尝试了批处理,切片和with_items之类的过滤器,但似乎不起作用。

有没有一种简单的方法可以在ansible中生成这些对?

您可以进一步优化。

  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"
        ]
    ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM