2015-09-26 5 views

答えて

7

この種のことに関しては、Ansibleドキュメントには限界があります。正式なベストプラクティスがある場合は、私はそれを見つけませんでした。

あなたのプレイブックを素敵に読めるようにする良い方法の1つは、ホストに対して複数の異なるプレイを実行し、それぞれ異なるパラメータで役割を呼び出すことです。

this descriptionの構文は、パラメータを渡すのに適しており、何が起こっているかを一目瞭然にしています。たとえば:

- name: Run the docker role with docker_container_state=foo 
    hosts: docker-host 
    roles: 
    - { role: docker_container, docker_container_state: foo } 

- name: Run the docker role with docker_container_state=bar 
    hosts: docker-host 
    roles: 
    - { role: docker_container, docker_container_state: bar } 
5

私は通常、役割の一部を実行するためにincludesを使用する複数回、私は変数のまともなレイアウトを持っている場合(または全体的な役割を!)。以下の例のプレイブックを参照してくださいapply_stateprint_state.ymlの中にroles/apply_state/tasksフォルダがあります。トリックは、インクルードの中にアイテムを渡すことです。その後、それはケーキです。

- name: echo state 
    debug: msg="{{ state }}" 
print_state.yml

playbook.yml

- hosts: localhost 
    roles: 
    - { role: apply_state, states: [ state_one, state_two, state_three ] } 

役割/ apply_state /タスク/ main.yml

- name: print all states! 
    include: print_state.yml state="{{ item }}" 
    with_items: "{{ states }}" 

役割/ apply_state /タスク/

下記のansible-playbook -i localhost, playbook.ymlの出力を参照してください:

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 
関連する問題