1

我有一个Ansible剧本“运行all.yml”象下面这样:加新创建的AWS EC2 IP到Ansible库存在运行时

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

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

如果我用两个剧本分别运行其中的每个,它工作正常。

我的问题是,我希望把这两个放在一个剧本“运行all.yml”,这样我可以运行Ansible一次完成的,而不是两个独立运行的全过程。

那么 “AWS-EC2创建-instance.yml” 创建EC2实例,不添加到在运行时Ansible库存,那么的IP地址的” AWS-EC2安装,software.yml “将被跳过,因为没有找到主机。

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

非常感谢。

回答

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 
+0

请问你可以分享一下你在'dict'里有什么想法吗?由于 –

+0

只是一些键值对,“item.key”和“item.value”这个字典在我的命令使用 – keypoint

+0

@keypoint你能帮我如何给这些主机本地写入文件 –