gpt4 book ai didi

ansible - 在 Ansible 模板中加入键值对列表

转载 作者:行者123 更新时间:2023-12-02 02:26:53 25 4
gpt4 key购买 nike

我需要将以下 yaml 字典转换为逗号分隔的 key=value 对列表

nodes:
node1: 192.168.56.11
node2: 192.168.56.12

所以就变成了

node1=192.168.56.11,node2=192.168.56.12

在 Python 中,我会使用简单的列表理解来完成此操作,然后加入列表:

','.join([ k+'='+v for k,v in nodes.items()])

不过,我不知道如何在 Ansible 模板中优雅地做到这一点。当然,我可以使用 for 循环来完成此操作,但它会留下尾随逗号。迄今为止我最好的镜头:

{% for k,v in nodes.items() %}{{k}}={{v}}{% if not loop.last %},{% endif %}{% endfor %}

我是否忽略了什么?

最佳答案

Ansible 的等效项是以下 items() 和连接的链接。如果您希望它们按键排序,我添加了第二种方法:

---
- hosts: localhost
gather_facts: false
vars:
nodes:
node3: 192.168.56.13
node1: 192.168.56.11
node4: 192.168.56.14
node2: 192.168.56.12

tasks:
- name: print var
debug:
var: nodes.items()|map('join', '=')|join(',')

- name: print var (items sorted)
debug:
var: nodes|dictsort|map('join', '=')|join(',')

或者,在模板中:

{{nodes.items()|map("join", "=")|join(",")}}

关于ansible - 在 Ansible 模板中加入键值对列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65537542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com