从ansible的ini文件生成主机列表

时间:2019-09-21 05:55:07

标签: ansible

无法使用ini插件读取此文件。

$ cat hosts
[webservers]
www[01:50].example.com

戏剧

- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      with_ini:
        - '.* section=webservers file=hosts re=True'

给予

ok: [localhost] => (item=11].example.com) => {
    "msg": "11].example.com"
}

是否可以生成这样的主机列表?

[webservers]
www01.example.com
www02.example.com
www03.example.com
www04.example.com
www05.example.com
www06.example.com

1 个答案:

答案 0 :(得分:1)

  

Q:“是否可以生成类似...的主机列表?”

A:是的。使用template。例如

$ cat hosts
[webservers]
www[01:50].example.com

$ cat play.yml
- hosts: localhost
  vars:
    my_group: webservers
  tasks:
    - template:
        src: hosts-template.j2
        dest: /etc/ansible/hosts-webservers

$ cat hosts-template.j2 
[{{ my_group }}]
{% for my_host in groups[my_group] %}
{{ my_host }}
{% endfor %}

注释

  • inventory中的范围将得到扩展。
  • 如果您的hosts清单库存文件位于非标准位置(即不在/etc/ansible/hosts中),则在启动剧本时ansible-playbook -i /path/to/inventory/hosts play.yml