Ansible共享库存

问题描述 投票:2回答:2

我正在寻找一种优雅的解决方案来处理某种形式的共享库存,可以用于持续存在的变量,无论当前库存如何。

示例:有多个库存用于定义环境:

/inventory-live/
/inventory-staging/
/inventory-test/
/inventory-develop/

其中每个都定制了一系列环境特定细节。但是,某些内容(如许可证密钥,用户凭据等)不是特定于环境的。

目前,通过更新每个库存中的*/group_vars/all手动保持此信息的同步。

但是,是否有更优雅的解决方案将其保持在中心位置,并且不涉及在库存之间重复相同的信息?

ansible ansible-2.x
2个回答
1
投票

如果您将所有这些库存与单个剧本一起使用,您可以将group_vars/all放入您的剧本目录中 - Ansible不仅可以从库存文件中读取主机和组,还可以从当前的playbook目录中读取变量。

如果将这些清单与多个playbook一起使用,则可以从不同的清单创建公共目录和符号链接:

/inventory-common/common_vars.yml
/inventory-live/group_vars/all/common.yml -> ../../../inventory-common/common_vars.yml
/inventory-test/group_vars/all/common.yml -> ../../../inventory-common/common_vars.yml

1
投票

https://github.com/ansible/ansible/commit/8f97aef1a365cbbbb822d6d09f96af17a076b295的Ansible 2.4中引入的是能够在命令行上指定多个库存文件:

--inventory inventory1 --inventory inventory2

或ansible.cfg:

inventory = inventory1,inventory2

inventory1将是共享库存,inventory2中的匹配键将覆盖inventory1。

来源:https://github.com/ansible/ansible/issues/5316#issuecomment-345051733

© www.soinside.com 2019 - 2024. All rights reserved.