Ansible,用不同的参数组多次运行angular色

用不同的参数组运行一个angular色的最佳做法是什么?

我需要在一台服务器上多次运行一个应用程序(docker container),每个应用程序使用不同的环境variables。

在Ansible docs中有这样的限制 – 如果有官方的最佳实践,我没有遇到过。

一个好的方法可以让你的剧本保持良好的可读性,对主机运行几种不同的播放,并在每个播放器中用不同的参数调用angular色。

role: foo, var: blah语法显示在这个描述中的一个小方法是传入参数的好方法,并且一目了然地使事情保持一目了然。 例如:

 - 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 } 

我通常使用include来多次运行部分angular色(或整个angular色!),如果我有一个体面的variables布局。 请参阅下面的示例手册,angular色apply_state ,该roles/apply_state/tasksroles/apply_state/tasks文件夹中具有print_state.yml 。 诀窍是将内容传递给内部,之后这是一块蛋糕。

playbook.yml

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

angular色/ apply_state /任务/ main.yml

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

angular色/ apply_state /任务/ print_state.yml

 - name: echo state debug: msg="{{ 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