io di solito uso includes per eseguire parte del ruolo più volte, se ho un layout decente di variabili (o un ruolo intera!). Vedere il seguente playbook di esempio, con il ruolo apply_state
che contiene la cartella print_state.yml
all'interno della cartella . Il trucco è passare l'oggetto all'interno, dopo di che è un pezzo di torta.
playbook.yml
- hosts: localhost
roles:
- { role: apply_state, states: [ state_one, state_two, state_three ] }
ruoli/apply_state/attività/main.yml
- name: print all states!
include: print_state.yml state="{{ item }}"
with_items: "{{ states }}"
ruoli/apply_state/attività/print_state.yml
- name: echo state
debug: msg="{{ state }}"
Vedere l'output di ansible-playbook -i localhost, playbook.yml
di seguito:
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