我有一个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优雅地添加到库存中?
非常感谢。
答案 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