我有一个看起来像这样的变量:
files:
- a.yaml
- b.yaml
- c.yaml
使用
ansible.builtin.template
模块,我想构建一个包含以下字符串的文件:
OPTIONS="--config=a.yaml --config=b.yaml --config.yaml"
我无法对此进行硬编码,因为我并不总是知道:
...因为它们可以通过 Ansible 的任何一个变量设置选项(host|group_vars、角色默认值等)进行设置。这意味着我需要“构建”它,然后以某种方式将其“注入”到模板中。
有没有办法从这样的列表中构建字符串?
谢谢!
您可以使用
map
和 regex_replace
,如下所示:
- hosts: localhost
gather_facts: false
vars:
files:
- a.yaml
- b.yaml
- c.yaml
tasks:
- copy:
dest: myfile.sh
content: |
OPTIONS="{{ files | map('regex_replace', '^(.*)$', '--config=\1') | join(' ') }}"
这将创建文件
myfile.sh
,内容为:
OPTIONS="--config=a.yaml --config=b.yaml --config=c.yaml"