我看到Ansible EC2模块提供/启动/停止/终止的能力。但是,有没有办法查找/查询实例详细信息,如Private IP
,Public IP
等。
我正在查看用例以获取在停止/启动期间不断更改的公共IP [不是弹性IP]并相应地更新Route53 DNS记录。
有什么想法吗?
答案 0 :(得分:2)
您是否设置了 等待:真实 ?它将等待实例进入运行状态。我从未遇到过以下问题。注册后我能够获得公共IP。如果仍有问题,请使用 wait_for 让IP可用。或者在这里发布你的脚本。
- name: Start the instance if not running
ec2:
instance_ids: myinstanceid
region: us-east-1
state: running
wait: True
register: myinst
答案 1 :(得分:2)
您可以将新框注册到ec2变量并等待它们获取私有IP和公共IP,然后像这样访问它们:
- name: provision new boxes
hosts: localhost
gather_facts: False
tasks:
- name: Provision a set of instances
ec2:
group: "{{ aws_security_group }}"
instance_type: "{{ aws_instance_type }}"
image: "{{ aws_ami_id }}"
region: "{{ aws_region }}"
vpc_subnet_id: "{{ aws_vpc_subnet_id }}"
key_name: "{{ aws_key_name }}"
wait: true
count: "{{ num_machines }}"
instance_tags: "{{ tags }}"
register: ec2
- name: Add all instance public IPs to public group
add_host: hostname={{ item.public_ip }} groups=new_public_ips
with_items: ec2.instances
- name: Add all instance private IPs to private group
add_host: hostname={{ item.private_ip }} groups=new_private_ips
with_items: ec2.instances