gpt4 book ai didi

Ansible - 将对象数组映射到不同的对象数组

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

有没有办法将 Ansible Playbook 中的对象数组映射到不同的对象数组?假设我们有一个源数组:

arr:
- value: a
- value: b
- value: c

我们想要的是根据第一个数组中的对象获得一个不同的数组,比如说:
arr2:
- const: 1
var: a
- const: 1
var: b
- const: 1
var: c

这可以通过以下元素模板来实现:
const: 1
var: {{ value }}

有没有办法将这样的模板应用于数组中的每个元素?我还没有找到合适的 map过滤器,如 lookup('template', ...)不能在 map 内使用.

最佳答案

根据您的回答(我必须说它让我大开眼界,我找不到表达我无限感激之情的词语)我想出了一个我认为稍微更优雅的解决方案。

我尽量避免 set_facts模块,因为结果将具有相当高的优先级。我更喜欢坚持角色默认值以及主机和组库存变量。

此外,我更习惯 jinja2 模板而不是 Ansible 过滤器。

- hosts: localhost
gather_facts: no
vars:
arr:
- value: a
- value: b
- value: c
arr2: "{{ lookup('template', 'template.yaml.j2') | from_yaml }}"

tasks:
- debug:
var: "arr2"

并且 template.yaml.j2 文件将包含迭代:
{% for item in arr %}
- const: 1
var: {{ item.value }}
{% endfor %}

这为真正疯狂的变量操作打开了大门,同时保持剧本非常简单。

希望它能像帮助我一样帮助别人!

关于Ansible - 将对象数组映射到不同的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865961/

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