ansible tag标签
playbook tag 标签
一个playbook 中执行部分或某类任务,或者不执行某类时,可以给任务集打tag 标签。
执行某类任务用-t 参数,不执行某类任务用--skip-tags 参数;
1、查看playbook 中的所有tag:
ansible-playbook --list-tags test_tag.yml
2、预留tag 标签:always,tagged,untagged,all,never;
all:默认值,表示所有任务会被执行;
always: tags的值指定为always时,那么这个任务就总是会被执行,除非你使用–skip-tags选项明确指定不执行对应的任务;
never: 与always 相反;
tagged、untagged、all这三个特殊标签并非像always一样,always作为标签值存在,而这三个特殊标签则是在调用标签时使用;
如:
ansible-playbook --tags tagged testtag.yml
上述命令表示只执行有标签的任务,没有任何标签的任务不会被执行。
ansible-playbook --skip-tags tagged testtag.yml
上述命令表示跳过包含标签的任务,即使对应的任务包含always标签,也会被跳过。
ansible-playbook --tags untagged testtag.yml
上述命令表示只执行没有标签的任务,但是如果某些任务包含always标签,那么这些任务也会被执行。
ansible-playbook --skip-tags untagged testtag.yml
上述命令表示跳过没有标签的任务。
特殊标签all表示所有任务会被执行,不用指定,默认情况下就是使用这个标签。
注意:
1、在执行playbook 的-t 参数可以写为:--tags,与--skip-tags相同,给定的值可以是单个,可以是多个,多个的时候用逗号分开,如:-t=tag1,tag2 ;
当给定的值为all 时,执行所有task,无论task 是否有标签;
测试使用playbook yml 文件内容:
--- - hosts: all name: "play book tag1" tasks: - name: "单个tag" debug: msg: "all tag: tag1" tags: tag1 - name: "单个tag2" tags: - tag2 debug: msg: "all tag: tag2" - name: "不存在tag" debug: msg: "all tag:" - name: "多tag,tag1 tag2" tags: tag1,tag2 debug: msg: "all tag:tag1,tag2" - name: "tag: always 与tag1" tags: ['always','tag1'] debug: msg: "all tag: tag1,always"