ansible预置了5个特殊tag,分别为always、never(2.5版本中新加入的)、tagged、untagged、all
当我们把任务的tags的值指定为always时,那么这个任务就总是被执行,除非使用--skip-tags选项明确指定不执行对应的任务
--- - name: Add administrator user user: name: {{admin_user}} shell: /bin/bash state: present - name: Config administrator password for administrator user user: name: {{admin_user}} password: {{admin_user_passwd}} - name: Delete administrator user user: name: {{admin_user}} state: absent tag: delete_admin_user - name: Modify root passwd user: name: root password: {{root_passwd}} tag: modify_root_pwd,always
当执行ansible-playbook --tags delete_admin_user test.yaml后,不但执行了delete_admin_user的标签任务,还执行了拥有always标签的任务。
如果不想执行标签中包含always的任务,使用--skip-tags always选项,就会跳过所有包含always标签的任务。
对于never标签,其作用与always正好相反。
对于tagged、untagged、all三个特殊标签,并非像always和never一样作为标签值存在,而是在调用标签时使用
ansible-playbook --tags tagged test.yaml
上述命令表示只执行有标签的任务,没有任何标签的任务不会执行。
ansible-playbook --skip-tags tagged test.yaml
上述命令表示跳过包含标签的任务,即使拥有always标签,也会跳过。
ansible-playbook --tags untagged test.yaml
上述命令表示只执行没有标签的任务,但拥有always标签的任务,仍然会被执行。
ansible-playbook --skip-tags untagged test.yaml
上述命令表示跳过没有标签的任务。
在调用标签之前,如果要概览playbook中都有哪些标签,可以使用--list-tags选项。
参考文献:http://www.zsythink.net/archives/2641/