【发布时间】:2014-01-17 05:44:03
【问题描述】:
我有许多环境,需要定制一堆文本文件才能让 mule 等内容与正确的端点对话。
对于这种环境,这是可行的:
ansible-playbook test03.yml
环境之间的唯一区别(从 ansible 的角度来看)是 ./roles/esb/vars/main.yml 中保存的信息。
我考虑过使用 svn 为每个环境保留一个 vars/main.yml,所以每次我需要配置一个环境时,我都会检查角色,然后在运行命令之前检查该环境的 vars/main.yml以上。
对我来说,这不是一个优雅的解决方案。我怎样才能做得更好?
目录结构
./test03.yml
./roles/esb/vars/main.yml
./roles/esb/tasks/main.yml
./roles/esb/templates/trp.properties.j2
./test03.yml
---
- hosts: test03-esb
gather_facts: no
roles:
- esb
./roles/esb/vars/main.yml
---
jndiProviderUrl: 'jnp://mqendpoint.company.com:1099'
trp_endpoint_estask: 'http://tmfendpoint.company.com:8080/tmf/estask'
trp_endpoint_builderQ: 'jnp://mqendpoint.company.com:1099'
./roles/esb/tasks/main.yml
---
- name: replace variables in templates
template: src=trp.properties.j2 dest=/path/to/mule/deploy/conf/trp.properties
./roles/esb/templates/trp.properties.j2
trp.endpoint.estask={{ trp_endpoint_estask }}
trp.endpoint.builderQ={{ trp_endpoint_builderQ }}
【问题讨论】:
-
group_vars 似乎对此有一些线索。我无法弄清楚如何将其与角色整合。另外,include_vars,但我已经放弃尝试让它在角色中工作。
-
我现在已经整理好了。我在文件 group_vars/test03 中有我的变量。我运行 ansible-playbook -i ~/hosts test03.yml 并且在 ~/hosts 我有 [test03] \n servername 并且在 test03.yml 我只是指向角色。