2016-12-26 9 views
1

私はホストファイルにAnsibleプレイブックを使ってホスト名を追加しようとしています。私Ansibleプレイは以下のように見て、私のホストファイルは、/etc/ansible/hostsに存在:危険なホストファイルにホストを追加する

- 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ホストをインベントリファイルに追加するのではなく、メモリ内にのみ存在するインベントリにホストを作成して追加します。このインベントリは後続の再生でも使用できますが、ファイルには保存されません。

本当にAnagersでインベントリファイルにホストを追加する場合は、通常のファイル編集モジュール(lineinfileまたはblockinfileなど)を使用する必要があります。

- 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

あなたは、テンプレートを使用することができます:あなたはまた、Ansibleインベントリを処理するためにinifile moduleをだますことができますが、インベントリファイルが本当に適切なINIファイルの構造を持っていないとして、それは、本当にハックだ


hostsファイルを作成します。

タスクファイル

--- 
- 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 %} 
関連する問題