首页 > 解决方案 > 使用 ansible playbook 将 AWS ec2 实例与弹性 ip 关联

问题描述

我创建了一个代码,它成功地将我的实例与 EIP 关联起来。但是,我的public_ip地址不变,即与弹性ip关联之前给vm的地址。这是代码,

---
  - name: Provision an EC2 Instance
    hosts: local
    connection: local
    gather_facts: False
    tags: provisioning
    vars:
      instance_type: t2.micro
      security_group: My secure group
      image: ami-5b673c34
      keypair: mynodes
      region: ap-south-1
      count: 1

    tasks:

      - name: Launch the new EC2 Instance
        local_action: ec2
                      group={{ security_group }}
                      instance_type={{ instance_type}}
                      image={{ image }}
                      wait=true
                      region={{ region }}
                      keypair={{ keypair }}
                      count={{count}}
        register: ec2

      - name: Get the Ip address
        debug: var=ec2.instances[0].public_dns_name

      - name: Allocating elastic IP to instance
        ec2_eip:
          in_vpc: yes
          reuse_existing_ip_allowed: yes
          state: present
          region: "{{ region }}"
          device_id: "{{ item }}"
        with_items: "{{ ec2.instance_ids }}"
          #device_id: "{{ ec2.instances[0] }}"
        #register: instance_eip

      - debug: msg=ec2.instances[0].public_ip


      - #name: eip with instance
        #pause:
          #seconds: 30

      - name: Add the newly created EC2 instance(s) to the local host group 
        local_action: lineinfile
                      dest="/etc/ansible/hosts"
                      regexp={{ item.private_ip }}
                      insertafter="[node3]" line={{ item.private_ip }}
        with_items: "{{ ec2.instances }}"


      - name: Wait for SSH to come up
        local_action: wait_for
                      host={{ item.public_ip }}
                      port=22
                      state=started
        with_items: '{{ ec2.instances }}'

      - name: Add tag to Instance(s)
        local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
        with_items: '{{ ec2.instances }}'
        args:
          tags:
            Name: node3

因此,如果我不为其分配弹性 ip,我的代码当前运行良好。但是当我这样做时,我不知何故无法执行 ssh'ing 到我新创建的虚拟机的任务。

标签: amazon-web-servicesansible

解决方案


推荐阅读