我有一個可以調用我寫過的多個角色的劇本。這個劇本的每個角色的標記都比我可以單獨調用它們或者從頭到尾運行整個過程。在這些角色中,還可以提供額外的標籤來分解這些內容。一些角色任務被標記爲「always」,因爲我希望他們在角色運行時執行,而不管任何角色特定的標記。Ansible:在角色中跳過「始終」標籤
我遇到的問題是這些「始終」標籤執行是否調用角色特定標籤。如果我沒有爲某個角色調用標籤,則我不想根據角色執行任何操作,包括特定於該角色的任何「始終」任務。
實施例:
# Playbook
- hosts: localhost
roles:
- role: roleA
tags: do_roleA
- role: roleB
tags: do_roleB
# Role A:
- name: Always do this when doing role A
debug: msg="test"
tags: always
- name: Task1
debug: msg="task1"
tags: do_task1
- name: Task2
debug: msg="task2"
tags: do_task2
例呼叫:
ansibile-playbook my-playbook.yml --tags "do_roleB"
但是這將導致在作用甲調試發生爲好。
一些要求我:
- 不能跳過「永遠」爲roleB可能有需要它的一些任務。
- 不想從始終更改標籤併爲每個子任務添加標籤列表。即[do_task1,do_task2]隨着標籤的數量變大並且容易忘記添加一個。
基本上我正在尋找一種方法來告訴Ansible,如果我稱之爲「playbook標籤」,只執行標籤匹配的playbook中的角色;不要執行任何不匹配的角色中的任何任務,即使它們被標記爲「始終」。但是,如果我稱之爲「角色標籤」,則執行該角色中具有「總是」標籤或我稱之爲標籤的所有任務。
Ansible有這樣的功能嗎?如果它有助於我使用Ansible 2.0.1.0
你可以試一試:ansibile-playbook my-playbook.yml -skip-tags「do_roleA」 – perbellinio