【问题标题】:ansible - define hosts/tag from dynamic inventory in the host fileansible - 从主机文件中的动态清单中定义主机/标签
【发布时间】:2017-03-07 08:40:36
【问题描述】:

我在 ec2 实例上使用ec2.py 和特定标签来获取我的主机,结果显示为 IP 地址列表,例如:

ec2.py 的结果:

 "tag_test_staging": [
    "10_80_20_47"
  ],

我在我的剧本- hosts: tag_Name_test 中定义了标签,它在tag_Name_test 的所有实例上运行。

有没有办法在 inventory/ 文件夹下的 hosts 文件中定义主机/标签,并且 playbook 将从那里获取主机,而不是像现在这样直接在 playbook 上指定 ec2 标签?

任何建议将不胜感激。

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    你已经朝着正确的方向前进了。

    假设您通过ec2.py 获得动态库存,它是tag_test_staging。因此,您可以如下构建库存文件夹和文件

    inventory 
      staging
        hosts
        group_vars
          all.yml
          tag_test_staging.yml
          tag_Name_test.yml
    

    您在每个 YAML 文件中添加变量定义。 tag_test_staging.yml 中的变量将仅应用于具有该标签的实例。

    所以现在你可以将你的剧本应用为:

    ansible-playbook -i inventory/staging your_playbook.yml
    

    有一个关于如何use dynamic inventory with clouds 的最佳实践文档,也请看一下。

    【讨论】:

    • 谢谢,我是 ansible 新手,如何在 YAML 文件中将其定义为变量?
    • 这实际上是我的问题 - 我如何在清单文件上定义变量而不是在剧本上定义 - hosts: tag_Name_test
    猜你喜欢
    • 2020-02-25
    • 2021-03-04
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多