2

我们正在考虑使用 Consul 的键值存储来增强我们的配置管理工具(目前是 Ansible)。我们希望用它来解决两个相关的问题:

  1. 防止分散:一些项目(即:密码、证书等)分散在我们的配置文件中。更新它们需要手动搜索和替换,这可能很烦人。
  2. 易于更新:与其将配置更改编辑并提交到 git,我们可以使用 Consul 来存储那些经常更改的项目。

我们正在寻找一组关于如何使用/集成 Consul(或类似工具)进行动态配置的建议。自然,这里没有一个答案,而是一组有用的做法。我将在我的回答中提供一些方法,但我想听听更多的想法。

4

3 回答 3

3

一段时间以来,我们一直在将 Consul 用作键值存储,但我认为最有趣的用途是Consul 模板,并使用它来即时更新配置。

我认为我们可能正在走向的最终状态是使用 Ansible 来配置我们知道变化缓慢的事物的基本映像加上配置 Consul 模板,然后是 AMI(这前两个步骤可能通过Packer完成)然后使用Terraform(我们已经用于配置)部署到 AWS 中的 Auto Scaling 组。

然后我们将使用 Consul 的键值存储来更改 Consul 模板将在实例集群中传播的属性。我们还打算让实例在 Consul 中注册自己,这也会影响其他实例的配置,例如 Apache/NGINX 配置上的负载平衡成员或集群的单播可寻址成员列表。

在一个稍微相关的注释中,正如mahnve所提到的,Vault是 Consul 用于存储秘密的一个非常好的附加组件。我们已经将它用于相当静态的秘密,但打算开始使用一些动态秘密生成,它允许您请求可以跟踪和撤销的短期 API 或 SSH 密钥。

于 2016-06-09T07:48:07.300 回答
3

为了缓解#1,我建议查看 Hashicorps Vault,https: //www.vaultproject.io/ ,这是一个处理机密的工具,可以使用 Consul 作为后端。

于 2016-06-09T06:48:12.030 回答
1
  1. 我们还没有这样做,但正在考虑将 consul 集成到我们的 Ansible 游戏中。Ansible 最近从 consul 添加了一个查找选项:

https://github.com/ansible/ansible/blob/devel/test/integration/roles/test_consul_kv/tasks/main.yml#L70

- debug: msg='key contains {{item}}'
  with_consul_kv:
  - 'key/to/retrieve'

所以我们可以直接用 Consul 的值填充我们的剧本。

  1. 我们正在考虑的另一种方法是利用 consul 的模板工具- 并在 ansible 将它们植入我们的主机后模板整个配置文件。
于 2016-06-09T06:25:21.437 回答