如何将库存项目加入逗号分隔列表中?

如何将库存项目加入逗号分隔列表中?

我有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

相关内容