在运行时将新创建的 AWS EC2 IP 添加到 Ansible 清单

add newly created AWS EC2 IP to Ansible inventory at runtime

我有一个 Ansible 剧本 "run-all.yml" 如下所示:

---
- include: aws-ec2-create-instance.yml
- include: aws-ec2-install-software.yml

第一个 .yml 将创建 EC2 实例,第二个 .yml 将为这个新创建的实例安装软件。

如果我分别 运行 这两个剧本中的每一个,它都可以正常工作。

我的问题是,我想将这两个放在一个剧本中 "run-all.yml",这样我就可以 运行 Ansible 一次完成整个过程,而不是两个单独的 运行s.

然后“aws-ec2-create-instance.yml”创建的 EC2 实例的 IP 未添加到 运行 的 Ansible 清单时间,则由于未找到主机,将跳过“aws-ec2-install-software.yml”。

我正在尝试使用 Ansible“add_host”模块在实例创建后添加 IP,但它有点难看。有没有更好的方法可以优雅地将 EC2 实例 IP 添加到清单?

非常感谢。

它是可行的,我通过使用模块“add_host”实现了它,它可以动态地将主机添加到库存已经加载到内存中的库存,关键是确保组名是正确的。

- name: add new instance to host group at runtime
  add_host: hostname={{ ec2.instances[0].public_ip }} groupname=tag_{{ item.key }}_{{ item.value }}
  with_dict: dict