Ansible版本:1.9.2
我正在运行一个将启动EC2实例的剧本。我有所有变量的site.yml并使用角色来启动EC2实例。这是ec2_launch
的main.yml---
- 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选项运行时,这是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文件时,它尚未被修改。我确保在hosts文件中包含[group_name]。在运行期间没有错误,并且不确定为什么它没有被添加到文件中。
有一个' add_host'此页面上的示例:http://docs.ansible.com/ec2_module.html 而不是名称和组,他们使用主机名,组名(我相信是旧的)。我也试过这些。不确定我错过了什么。
答案 0 :(得分:7)
add_host
任务不将其添加到主机文件中,它将其添加到内存中的主机列表中。
添加到hosts文件并不适用于所有情况 - 例如,AWS用户经常使用./ec2.py
脚本,这是一个二进制可执行文件,用于替换基于文本的主机文件。