2016-12-26 2 views
1

나는 호스트 플 묵를 사용하여 호스트 파일에 호스트 이름을 추가하려고 시도했습니다.호스트 호스트 파일에 호스트 추가

- 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 호스트 파일에 추가되지 않습니다 : 내 Ansible 플레이 아래와 같이보고 나의 호스트 파일은 /etc/ansible/hosts에 거주하고 있습니다. 아무도 이걸 도와 줄 수 없나요?

답변

5

add_host module 호스트를 인벤토리 파일에 추가하지 않고 대신 메모리에만있는 인벤토리에 호스트를 만들고 호스트에 추가합니다. 다음 재생에서이 인벤토리를 사용할 수 있지만 파일에 저장되지는 ​​않습니다.

실제로 Anagers를 사용하여 인벤토리 파일에 호스트를 추가하려면 lineinfile 또는 blockinfile과 같은 일반 파일 편집 모듈을 사용해야합니다.


또한 Ansible 재고를 처리하기 위해 inifile module을 속일 수 있지만, 재고 파일이 정말 적절한 INI 파일 구조를 가지고 있지 않는 한, 정말 해킹 :

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

당신은 아마 그런 식으로 자동 항목이 너무 - 디렉토리가 자신에 머물 수있는 인벤토리를 만드는 재미를 가질 수 파일. – 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 %} 
관련 문제