Consul的Key-Value商店有哪些具体的用例?

时间:2016-06-09 06:19:23

标签: ansible consul consul-template

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

  1. 防止分散:某些项目(即:密码,证书等)分散在我们的配置文件中。更新它们需要手动搜索和替换,这可能很烦人。
  2. 易于更新:而不是将配置更改编辑并提交到git中,我们可以使用Consul来存储经常更改的项目。
  3. 我们正在寻找一套关于如何使用/集成Consul(或类似工具)进行动态配置的建议。当然,没有一个答案,但这里有一套有用​​的做法。我会在答案中提供一些方法,但我想听听其他想法。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

我们一段时间以来一直在修改Consul作为键值存储,但我认为最有趣的用途是Consul Template,并使用它来动态更新配置。

我认为我们可能会走向的最终状态将是使用Ansible来配置我们知道变化缓慢的基础图像加配置Consul Template,然后是AMI(这可能是前两个步骤)通过Packer)然后使用Terraform(我们已经用于配置)在AWS中部署到自动扩展组中。

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

在一个稍微相关的说明上,mentioned作为mahnveVault是一个非常好的补充,用于存储秘密。我们已经将它用于漂亮的静态秘密,但打算开始使用一些动态秘密生成,它允许您请求可以跟踪和撤销的短期API或SSH密钥。

答案 2 :(得分:1)

  1. 我们尚未这样做,但正考虑将consul整合到我们的Ansible剧中。 Ansible最近在consul中添加了一个查找选项:
  2. 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的templating tool - 并在我们的主机上安装它们之后模拟整个配置文件。