tags可以帮助我们对任务进行’打标签’的操作,当任务存在标签以后,我们就可以在执行playbook时,借助标签,指定执行哪些任务,或者指定不执行哪些任务。在实际的使用中,我们应该让tags的值能够见名知义。
当指定标签后,只有标签对应的任务会被执行,其他任务都不会被执行
除了能够指定”需要执行的任务”,还能够指定”不执行的任务”,使用 –skip-tags
选项指定”不执行的任务”,可以为每个任务添加多个标签,三种语法添加多个标签的示例如下
tags:- testtag- t1tags: tag1,t1tags: ['tagtest','t2']
当tags写在play中而非task中时,play中的所有task会继承当前play中的tags,而上例中,两个任务都会继承httpd标签,同时还有拥有自己的标签。
在调用标签时,也可以一次性指定多个标签,调用多个标签需要用逗号隔开,在调用标签之前,如果你想要概览一下playbook中都有哪些标签,可以使用 –list-tags
选项,其实,ansible还预置了5个特殊tag,这5个特殊tag分别为
alwaysnever(2.5版本中新加入的特殊tag)tagged
表示只执行有标签的任务,没有任何标签的任务不会被执行
untagged
只执行没有标签的任务,但是如果某些任务包含always标签,那么这些任务也会被执行。all特殊标签all表示所有任务会被执行,不用指定,默认情况下就是使用这个标签
如果你不想执行标签中包含always的任务,你可以使用–skip-tags always
选项明确指定跳过它们