我需要将几个包含文件内容的字典添加到一个列表中,以便进一步使用URI模块。我现在手动操作,像这样:
ansible.builtin.uri:
method: POST
body_format: json
body:
actions:
- action: create
file_path: ".gitlab-ci.yml"
content: "{{ lookup('file', '.gitlab-ci.yml') }}"
- action: create
file_path: "README.md"
content: "{{ lookup('file', 'README.md') }}"
字符串
我想让这个任务通用,这样我就不必硬指定文件的名称:
ansible.builtin.set_fact:
files:
- .gitlab-ci.yml
- README.md
ansible.builtin.uri:
method: POST
body_format: json
body:
actions: ["
{% for fs in files -%}
{
'action': 'create',
'file_path': '{{ fs }}',
'content': '{{ lookup('file', fs) }}'
}{% if not loop.last %},{% endif %}
{%- endfor %}"
]
型
因此,文件的内容存储在actions[*]内容变量中,但仅作为字符串存储,因为文件包含标记。如果将lookup替换为'Hello World'行,则会正常生成json。你能告诉我如何使用loop
和lookup
保存一个文件的内容与actions
变量中的content
键吗?
1条答案
按热度按时间dced5bon1#
使用过滤器 indent 正确缩进块。然后通过 from_yaml 对结构进行 * 过滤 *
字符串
给予
型
您应该能够在 uri 模块中使用它
型
(not测试)