如何在运行时访问通过命令行传递给ansible playbook的标签和skip-tags?
我正在尝试使用$password = 'Ga$man';
子句实现可以跳过或包含基于tag / skip-tag的项的with_items
循环。 This previous SO question涉及同一主题,但采取了不同的方法。
我会评估每次迭代是否存在标记。
例如:
when
答案 0 :(得分:2)
标签在运行时不可用。标签定义将执行的任务。您可以使用它将标签翻译成事实:
- set_fact:
image1: True
tags: image1
- set_fact:
image2: True
tags: image2
- set_fact:
image3: True
tags: image3
现在您有与您的标签相对应的事实,并且可以在您的条件中使用它们:
...
when: hostvars[inventory_hostname][item] == True
with_items:
- image1
- image2
- image3
但对我来说这感觉不对。这不是标签的目的。标签不应定义主机上安装的软件。这应该在您的组/主机变量中定义。然后标签应该简单地将播放限制为任务的子集,例如更新包,重新启动服务等等。
除了标签,您可以使用extra-vars存档相同的标签。这也为您提供更多控制。如果您在没有提供任何标签的情况下调用您的剧本,则将执行所有任务。
答案 1 :(得分:2)
从2.5开始,ansible添加了一些魔术变量以在运行时进行访问。其中一些是ansible_run_tags
。似乎正是您所需要的。