【发布时间】:2017-09-05 14:02:52
【问题描述】:
我已阅读 this question 和 this 指南,但我仍然不明白如何使用 ansible 正确建模我们的环境。
我们的环境:
- 产品
- A、B、C、D、E、F、G,每个都安装在自己的服务器上,外加一个 HA 备份
- 预生产
- A、B、C、D、E、F、G,每个都安装在自己的服务器上
- 外部开发实例(5 个实例,有时更多)
- A、B、C、D、E,全部安装在单个 VM 上
- F、G 在 ext-dev 的共享环境中
- 内部开发实例(50 多个实例)
- A、B、C、D、E、F、G 全部安装在单个 VM 上
每个部分 A-G 都有很多配置键/值对,分布在大约 30 个文件中,例如由 url/db-connection-strings/...、其他实例的主机名(A 需要 B 的主机名/端口等)或各种性能设置组成。
许多配置键/值对是为开发实例共享的,但不是全部。所有外部实例(Dev、Pre-Prod、Prod)共享一些进一步的对。
我应该如何构建我的环境,以便我可以将所有键放置在适当的级别,例如prod,ext-dev,以某种方式我不必多次重复共享密钥?
上面所有的现有答案似乎只适用于更简单的环境。即使我创建了这样一个复杂的结构:
env/
prod/
group_vars/
all.yml
a.yml
b.yml
c.yml
d.yml
e.yml
f.yml
g.yml
hosts
pre_prod/
group_vars/
all.yml
a.yml
b.yml
c.yml
d.yml
e.yml
f.yml
g.yml
hosts
ext_dev/
group_vars/
all.yml
abcd.yml
fg.yml
hosts
int_dev/
group_vars/
all.yml
abcdefg.yml
hosts
roles/... [not important for this part]
playbook.yml
我似乎无法正确设置主 playbook.yml 文件,以便正确映射所有内容。但我不确定我做错了什么,因为(对我而言)这似乎是将上述两个资源中描述的设置正确映射到我们的环境。
特别是因为一些配置项是特定于实例的,一些是 prod/dev/.. 特定的,一些是全局的。
我应该如何设置我们的 ansible 项目结构,以便它能够处理我们复杂的环境?
【问题讨论】:
标签: deployment configuration ansible production-environment