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

时间:2015-06-16 17:30:20

标签: amazon-web-services deployment ansible ansible-playbook devops

我有一个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优雅地添加到库存中?

非常感谢。

1 个答案:

答案 0 :(得分: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