2016-12-26 65 views
1

我一直在尝试使用Ansible手册将主机名添加到我的主机文件。我Ansible戏看下面和我的主机文件驻留在/etc/ansible/hosts将主机添加到Ansible主机文件

- name: adding host playbook 
    hosts: localhost 
    connection: local 
    tasks: 
    - name: add host to ansible host file 
    add_host: 
     name: myvm.cloud.azure.com 
     groups: mymasters 

剧本成功执行,但新的主机名不添加到Ansible hosts文件。有人可以帮助我吗?

回答

5

add_host module不会将主机添加到您的库存文件,而是创建主机并将其添加到仅存在于内存中的库存。您可以在后续播放中使用此广告资源,但不会将其保存到文件中。

如果您真的想用Ansible将主机添加到库存文件中,您需要使用常规文件编辑模块,如lineinfileblockinfile


你也可以欺骗inifile module处理Ansible库存,但它是一个真正的黑客,随着库存的文件并没有真正有一个适当的INI文件结构:

- ini_file: 
    dest: /etc/ansible/hosts 
    section: mymasters 
    option: myvm ansible_host 
    value: myvm.cloud.azure.com 
    no_extra_spaces: yes 
+1

你也许可以有乐趣让您的库存目录too-这样的自动化项目可以留在自己的文件。 – tedder42

0

您可以使用模板创建主机文件。

任务文件

--- 
- name: Create HostsFile 
    hosts: development 
    user: vagrant 
    become: yes 
    become_method: sudo 

    tasks: 
    - name: Run the Template 
     template: src=hostsFile.j2 dest=/tmp/file.conf owner=root group=root 

模板文件: - HostsFile.j2

{{ ansible_managed }} 

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 


{% for group in groups %} 
{% if groups[group] and group != 'all' %} 
{% for host in groups[group] %} 
{{hostvars[host].ansible_default_ipv4.address}} {{ ansible_hostname }} 
{% endfor %} 

{% endif %} 
{% endfor %}