【问题标题】:Ansible - is it possible to add tags to hosts inside inventory?Ansible - 是否可以向库存中的主机添加标签?
【发布时间】:2019-05-28 01:34:27
【问题描述】:

正如主题所说,我的问题是是否可以向清单中描述的主机添加标签?

我的目标是能够在具有特定标签的特定主机/主机组上运行 ansible-playbook,例如仅在带有标签“Env=test and Type=test”的服务器上运行

例如,当我运行剧本时:

ansible-playbook -i hosts test.yml --extra-vars "Env=${test} Type=${test}"

我将在命令中传递标签,它只会在过滤后的主机上运行。

非常感谢!

更新:

或者,也许可以在动态库存中做一些事情? https://docs.ansible.com/ansible/latest/dev_guide/developing_inventory.html#developing-inventory

[tag_Name_staging_foo]

[tag_Name_staging_bar]

[staging:children]
tag_Name_staging_foo
tag_Name_staging_bar

【问题讨论】:

    标签: ansible ansible-2.x ansible-inventory


    【解决方案1】:

    回答你的问题

    是否可以在清单内的主机上添加标签以在特定主机/主机组上运行 ansible-playbook?

    不,tags 仅适用于任务

    当您将标签:属性应用于任务以外的结构时,Ansible 会处理标签属性以仅应用于它们包含的任务。在任务以外的任何地方应用标签只是一种方便,因此您不必单独标记任务。

    【讨论】:

    【解决方案2】:

    主机没有可靠的“标签”; tasks have tags 并且它们用于有条件地执行任务,而不是有条件地针对主机。

    有几种方法可以有条件地定位主机,根据我的经验,最好的方法是ansible groups。将您要定位的主机放在一个组中;然后要么直接在剧中瞄准这个群体:

     - hosts: my_host_group
       tasks: [ ... ] 
    

    或将 playook 限制为 play 中目标主机的子集:

    ansible-playbook -l my_limited_hosts_group playbook.yaml
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多