如果一个playbook,有很多的任务,在实际使用这个剧本时,你可能只是想要执行里面的一部分任务而已,或者只想要执行其中一类任务而已,而非想要执行整个剧本中的全部任务,这个时候可以借助tag实现这个需求。

见名知意,tag可以对任务进行’打标签‘的操作,当任务存在标签以后,我们就可以在执行playbook时,借助标签。指定执行哪些任务,或者指定不执行哪些任务。

例如:

image.png

如上所以,我们有3个task分别对应3个tag,实际应用中,tag应该是见名知意的,现在每个task都有自己的标签,对于上述的playbook时,我们只想要执行task2,该如何执行呢?

image.png

还可以使用--skip-tags选项指定不执行的任务,如下所以,task1和task3都会执行,task2不会执行。

image.png


上面的3种语法都可以指定标签,不过每个任务只有一个标签,其实,我们可以为每个任务添加多个标签,3中语法添加多个标签如下:

image.png

如下:不同的任务可以使用相同的标签。

image.png

上例中每个任务都会多个标签,而且每个任务都有一个共同的标签,就是httpd标签,所以,当我们执行ansible-playbook  --tags=httpd tagtouchfile.yaml,上述两个任务都会执行,对于上面play中的所有任务独有共同的httpd标签,像这种情况,我们可以把httpd标签提取出来,写在paly中:

image.png

当tags写在paly中而非task中时,play中的所有task会继承当前play中的tags,而上例中,两个task任务都会继承httpd这个标签,同时还会拥有自己的标签。