我想files通过预先添加/auto和附加_sw_table到每个元素来生成一个新列表。虽然我可以通过明确地将新字符串作为 args 提到regex_replacein来做到这一点map,但我想使用变量来实现相同的目标。以下工作:
- hosts: localhost
gather_facts: no
tasks:
- set_fact:
my_lst: []
top_dir: /auto
extra: sw_table
files: ['/etc/passwd', '/etc/group']
- set_fact:
my_lst: "{{ files | map('regex_replace', '(.*)', '/auto\\1_sw_table') | list }}"
- debug: var=my_lst
Run Code Online (Sandbox Code Playgroud)
输出:
$ ansible-playbook -i localhost, ./test.yaml
PLAY [localhost] **************************************************************************************************
TASK [set_fact] ***************************************************************************************************
ok: [localhost]
TASK [set_fact] ***************************************************************************************************
ok: [localhost]
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"my_lst": [
"/auto/etc/passwd_sw_table",
"/auto/etc/group_sw_table"
]
}
Run Code Online (Sandbox Code Playgroud)
如何使用变量top_dir并extra在调用map中获得相同的结果?
您可以在 Jinja2 中使用字符串连接:
- set_fact:
my_lst: "{{ files | map('regex_replace', '(^.*$)', top_dir + '\\1' + extra) | list }}"
Run Code Online (Sandbox Code Playgroud)
请注意我使用的更新的正则表达式模式。我对上面的输出有不同的结果,需要更新模式。
| 归档时间: |
|
| 查看次数: |
5205 次 |
| 最近记录: |