當任務存在標籤以後,就可以在執行playbook時,藉助標籤,指定執行哪些任務,或者指定不執行哪些任務了。
---
- hosts: test70
remote_user: root
tasks:
- name: task1
file:
path: /testdir/t1
state: touch
tags: t1
- name: task2
file: path=/testdir/t2
state=touch
tags: t2
- name: task3
file: path=/testdir/t3
state=touch
tags: t3
ansible-playbook --tags=t2 testtag.yml
ansible-playbook --skip-tags='t2' testtag.yml
tag可以指定多個標籤
---
- hosts: test70
remote_user: root
tasks:
- name: task1
file:
path: /testdir/t1
state: touch
tags:
- t1
- name: task2
file: path=/testdir/t2
state=touch
tags: ['t2']
語法一:
tags:
- testtag
- t1
語法二:
tags: tag1,t1
語法三:
tags: ['tagtest','t2']
當執行’ansible-playbook --tags=httpd testhttpd.yml’,install httpd package和start up httpd service兩個任務都會執行。
---
- hosts: test70
remote_user: root
tasks:
- name: install httpd package
tags: httpd,package
yum:
name=httpd
state=latest
- name: start up httpd service
tags: httpd,service
service:
name: httpd
state: started
play中的所有任務都有共同的httpd標籤,可以把httpd標籤提取出來,當tags寫在play中而非task中時,play中的所有task會繼承當前play中的tags,而上例中,兩個任務都會繼承httpd標籤,同時還有擁有自己的標籤。
---
- hosts: test70
remote_user: root
tags: httpd
tasks:
- name: install httpd package
tags: ['package']
yum:
name=httpd
state=latest
- name: start up httpd service
tags:
- service
service:
name: httpd
state: started
指定多個標籤,用逗號隔開
ansible-playbook --tags package,service testhttpd.yml
概覽標籤
ansible-playbook --list-tags testhttpd.yml
特殊標籤:tagged、untagged、all
只執行有標籤的任務,沒有任何標籤的任務不會被執行
ansible-playbook --tags tagged testtag.yml
跳過包含標籤的任務,即使對應的任務包含always標籤,也會被跳過。ansible-playbook --skip-tags tagged testtag.yml
執行沒有標籤的任務,但是如果某些任務包含always標籤,那麼這些任務也會被執行。
ansible-playbook --tags untagged testtag.yml
跳過沒有標籤的任務
ansible-playbook --skip-tags untagged testtag.yml
————Blueicex 2020/3/27 13:11 [email protected]