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/tasks
在roles/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