ansible - Ansible/Jinja 模板
问题描述
我正在寻找一个事实,其成分是字典,但在下面的代码中my_dict_var
呈现为string
虽然我希望它是一本字典。
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( my_dcit_var ) }}"
vars:
my_dcit_var: { "{{ item }}" : ['some string value'] }
with_items:
- 1
- 2
- 3
我期待最终的结果应该是。
{1: ['some string value'], 2: ['some string value'], 3: ['some string value']}
有人可以指出我的错误。
解决方案
该部分为循环中的每个项目{ "{{ item }}" : ['some string value'] }
创建一个具有相同键的字典,"{{ item }}"
而不是一个变量。key:value
因此,combine每次都会用最新的对覆盖 dict对。这是您可以解决的方法,
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( my_dict_var ) }}"
vars:
my_dict_var: "{{ { item : ['some string value'] } }}"
with_items:
- 1
- 2
- 3
或者,简单地说
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( { item: ['some string value'] } ) }}"
with_items:
- 1
- 2
- 3
Ansible 还建议尽可能使用 ofloop
而不是with_
查找。这是一个使用循环和指定键:值对的示例。
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( { item.key: item.val } ) }}"
loop:
- { key: 1, val: ['some string value1'] }
- { key: 2, val: ['some string value2'] }
- { key: 3, val: ['some string value3'] }
推荐阅读
- swift - Swift4.2 从视频中抓取截图
- go - 从 golang 中受限键范围内的映射生成的切片中随机选择元素。有 O(1) 捷径吗?
- kubernetes - 如何在 Kubernetes 中公开外部 ip?
- r - 如何在R中的字符串中间解析斜体?
- android - 使用 MvvmCross 构建的 Xamarin Android 应用在 3-4 天后从后台恢复时卡在初始屏幕上
- observable - .isDisposed() 结果的冲突答案
- javascript - 我无法将数据保存到我的 mongodb Atlas 数据库
- excel - 使用电子邮件任务附加 excel 文件的 ssis 包
- ios - 有时在我的 dataTask 中处理我的请求时出错
- java - 如何确保在 JUnit5 中引发特定异常?