1

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

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

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

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

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

然后“ aws-ec2-create-instance.yml ”创建的EC2实例的IP,在运行时不会添加到Ansible清单中,那么“ aws-ec2-install-software.yml ”将由于没有主机而被跳过成立。

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

非常感谢。

4

1 回答 1

1

这是可行的,我通过使用模块“ 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
于 2015-06-26T18:28:23.540 回答