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/