2015-07-10 111 views
0

Ansible版本:1.9.2Ansible add_host未添加到主機文件

我正在運行一個將啓動EC2實例的操作手冊。我擁有包含所有變量的site.yml,並使用角色啓動EC2實例。下面是該ec2_launch

--- 
- name: create EC2 instance 
    ec2: 
    key_name: "{{ keypair }}" 
    group_id: "{{ security_group }}" 
    instance_type: "{{ instance_type }}" 
    image: "{{ image }}" 
    region: "{{ region }}" 
    vpc_subnet_id: "{{ vpc_subnet_id }}" 
    assign_public_ip: yes 
    wait: True 
    instance_tags: 
     Name: "{{ instance_tag }}" 
     Environment: "{{ instance_tag2 }}" 
    exact_count: 1 
    count_tag: 
     Name: "{{ instance_tag }}" 
     Environment: "{{ instance_tag2 }}" 
    monitoring: yes 
    register: ec2 
- name: add ec2 instance to hosts 
    add_host: name={{ item.private_ip }} groups=group_name 
    with_items: ec2.instances 
- name: wait for SSH 
    wait_for: host={{ item.private_ip }} port=22 delay=60 timeout=320 state=started 
    with_items: ec2.instances 

當我和-vvv選項運行main.yml,這是add_hosts期間的輸出:

TASK: [ec2_launch | add ec2 instance to hosts] ******************************** 
creating host via 'add_host': hostname=10.50.101.93 
added host to group via add_host module: group_name 

的IP是正確的,該組的名稱是正確的,但在我檢查ansible hosts文件,它沒有被修改。我確保將[group_name]包含在hosts文件中。在運行過程中沒有錯誤,不知道爲什麼它沒有被添加到文件中。

在此頁面上有一個'add_host'示例:http://docs.ansible.com/ec2_module.html 而不是名稱和組,它們使用主機名,組名(我認爲它是舊的)。我也嘗試過這些。不知道我錯過了什麼。

回答

6

add_host任務確實不是將其添加到主機文件,它將其添加到主機的內存列表中。

添加到主機文件在所有情況下都不起作用 - 例如,AWS用戶經常使用./ec2.py腳本,該腳本是替代其基於文本的主機文件的二進制可執行文件。

+0

Gotcha - 我也可以使用lineinfile模塊,對嗎? – nocode

+0

lineinfile模塊爲我工作。謝謝(你的)信息! – nocode

+0

對於下一個來這裏的人:這裏是文檔:http://docs.ansible.com/ansible/add_host_module.html。閱讀標題。另外,考慮到最好的做法是利用動態庫存與博託因此修改主機配置文件沒有多大意義。 – einarc