Ansible EC2模块,用于检索有关实例的信息

时间:2015-12-08 09:48:34

标签: amazon-web-services amazon-ec2 ansible ansible-playbook

我看到Ansible EC2模块提供/启动/停止/终止的能力。但是,有没有办法查找/查询实例详细信息,如Private IPPublic IP等。

我正在查看用例以获取在停止/启动期间不断更改的公共IP [不是弹性IP]并相应地更新Route53 DNS记录。

有什么想法吗?

2 个答案:

答案 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