我有ansbile inv
# cat inv
[all]
vm1
vm2
我想使用 Jinja 模板将它们提取到逗号分隔的列表中
所以我添加了 jinja 模板
# cat comb_list.j2
{{ groups['all'] | map('extract', hostvars, ['item']) | join(',') }}"
但我猜 item 不是主机变量,所以会抛出错误
我希望最终文件看起来像这样
# cat comb_list
vm1,vm2
答案1
模板
shell> cat comb_list.j2
{{ groups.all|join(',') }}
和剧本
shell> cat playbook.yml
- hosts: all
gather_facts: false
tasks:
- template:
src: comb_list.j2
dest: comb_list
delegate_to: localhost
run_once: true
给出
shell> ansible-playbook -i inv playbook.yml
...
shell> cat comb_list
vm1,vm2