我在ec2实例上使用ec2.py
和特定标记来获取我的主机,结果显示为IP地址列表,例如:
ec2.py的结果:
"tag_test_staging": [
"10_80_20_47"
],
我在我的Playbook - hosts: tag_Name_test
中定义了该标记,并在tag_Name_test
的所有实例上运行。
有没有办法在hosts
文件夹下的inventory/
文件夹中定义hosts / tag,而playbook将从那里获取主机,而不是像现在一样直接在playbook上指定ec2标签?
任何建议都将不胜感激。
答案 0 :(得分:2)
你已经走向了正确的方向。
假设您在ec2.py
之前获得了动态广告资源,并且它是tag_test_staging
。因此,您可以构建库存文件夹和文件,如下所示
inventory
staging
hosts
group_vars
all.yml
tag_test_staging.yml
tag_Name_test.yml
在每个YAML文件中添加变量define。 tag_test_staging.yml
中的变量将仅应用于具有该标记的实例。
所以现在你可以将你的剧本应用为:
ansible-playbook -i inventory/staging your_playbook.yml
有关于如何use dynamic inventory with clouds的最佳做法文档,请查看。