ansible - 从主机文件中的动态库存定义主机/标签

时间:2017-03-07 08:40:37

标签: ansible ansible-inventory

我在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标签?

任何建议都将不胜感激。

1 个答案:

答案 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的最佳做法文档,请查看。