在 Ansible 剧本中获取创建实例的 IP 地址

Get IP address of created instance in Ansible playbook

我有一个使用

的 Ansible 剧本
include: launch.yml

创建 AWS EC2 实例。然后我有

hosts: server-launch
sudo: yes
gather_facts: yes
vars_files:
    - vars.yml

roles:
  - { role: "role1" }
  - { role: "role2" }
  - { role: "stop aws instance", ip_address: "" }

我不确定如何获取 IP 地址并将其显式发送给停止 aws 实例角色。我该怎么做?这是针对 Ansible v2.1.1.0 的。

我最终没有使用 Ansible 中的 ec2 实现来解决这个问题。相反,我在上面提到的 "role2" 中添加了以下行:

- name: restart machine
  shell: sleep 2 && shutdown -r now "Ansible updates triggered"
  async: 1
  poll: 0
  sudo: true
  ignore_errors: true

- name: waiting for server to come back
  local_action: wait_for host={{ inventory_hostname }} state=started delay=30 timeout=300
  sudo: false

找到 here。这一直运作良好。