異なるパラメータセットで1つのロールを実行する場合のベストプラクティスは何ですか?異なるパラメータセットを使用して実行可能なロールを複数回
1つのアプリケーション(ドッカーコンテナ)を、それぞれ異なる環境変数を持つ1つのサーバー上で複数回実行する必要があります。
異なるパラメータセットで1つのロールを実行する場合のベストプラクティスは何ですか?異なるパラメータセットを使用して実行可能なロールを複数回
1つのアプリケーション(ドッカーコンテナ)を、それぞれ異なる環境変数を持つ1つのサーバー上で複数回実行する必要があります。
この種のことに関しては、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 }
私は通常、役割の一部を実行するためにincludesを使用する複数回、私は変数のまともなレイアウトを持っている場合(または全体的な役割を!)。以下の例のプレイブックを参照してくださいapply_state
print_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