使用 Ansible 的复杂环境
Complex environments with Ansible
我已阅读 question and this 指南,但我仍然不明白如何使用 ansible 正确建模我们的环境。
我们的环境:
- 产品
- A、B、C、D、E、F、G,每个都安装在自己的服务器上,加上 HA-backup
- 预生产
- 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 的每个部分都有很多配置 key/value 对分布在 ~30 个文件中,例如由 url/db-connection-strings/...、其他实例的主机名(A 需要 B 的 hostname/port 的名称等)或各种性能设置组成。
许多配置 key/value 对为开发实例共享,但不是全部。所有外部实例(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 项目结构以便它能够处理我们的复杂环境?
"How should I structure my environment so I can place all keys at the proper level , e.g. prod, ext-dev, in a way that I don't have to repeat the shared keys multiple times?"
你不应该。这些键现在可能具有相同的值,但您不能保证它们将来总是相同的。
你最好完全分离你的环境。
我已阅读
我们的环境:
- 产品
- A、B、C、D、E、F、G,每个都安装在自己的服务器上,加上 HA-backup
- 预生产
- 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 的每个部分都有很多配置 key/value 对分布在 ~30 个文件中,例如由 url/db-connection-strings/...、其他实例的主机名(A 需要 B 的 hostname/port 的名称等)或各种性能设置组成。
许多配置 key/value 对为开发实例共享,但不是全部。所有外部实例(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 项目结构以便它能够处理我们的复杂环境?
"How should I structure my environment so I can place all keys at the proper level , e.g. prod, ext-dev, in a way that I don't have to repeat the shared keys multiple times?"
你不应该。这些键现在可能具有相同的值,但您不能保证它们将来总是相同的。
你最好完全分离你的环境。