Tôi thường sử dụng includes để chạy một phần vai trò (hoặc toàn bộ vai trò!) Nhiều lần, nếu tôi có bố cục thay đổi. Xem sách hướng dẫn ví dụ bên dưới, với vai trò apply_state
có print_state.yml
bên trong thư mục roles/apply_state/tasks
. Bí quyết là để vượt qua mục bên trong bao gồm, sau đó nó là một miếng bánh.
playbook.yml
- hosts: localhost
roles:
- { role: apply_state, states: [ state_one, state_two, state_three ] }
vai trò/apply_state/nhiệm vụ/main.yml
- name: print all states!
include: print_state.yml state="{{ item }}"
with_items: "{{ states }}"
vai trò/apply_state/nhiệm vụ/print_state.yml
- name: echo state
debug: msg="{{ state }}"
Xem kết quả của ansible-playbook -i localhost, playbook.yml
bên dưới:
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [apply_state : print all states!] *****************************************
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost
included: /home/user/roles/apply_state/tasks/print_state.yml for localhost
TASK [apply_state : echo state] ************************************************
ok: [localhost] => {
"msg": "state_one"
}
TASK [apply_state : echo state] ************************************************
ok: [localhost] => {
"msg": "state_two"
}
TASK [apply_state : echo state] ************************************************
ok: [localhost] => {
"msg": "state_three"
}
PLAY RECAP *********************************************************************
localhost : ok=7 changed=0 unreachable=0 failed=0