如何管理环境变量以实现持续部署

时间:2014-01-09 15:01:35

标签: automation continuous-integration chef puppet ansible

所以,这些天的常见做法是将连接字符串放在一起。密码作为环境变量,以避免将它们放入文件中。这一切都很好,但是我不确定如何在尝试使用某些配置管理工具(如Salt / Ansible或Chef / Puppet)设置持续部署工作流程时如何工作。

具体来说,我在使用上述配置管理工具的环境中遇到以下问题:

  1. 您在哪里存储与代码库分开的连接字符串/密码/密钥?
    • 您是否将这些项目保存在某种类型的代码回购中(git等)?
    • 您是否使用了内置的工具结构?
  2. 如何保证这些物品安全?
  3. 您是否跟踪更改/备份这些项目,如果是,如何跟踪?

4 个答案:

答案 0 :(得分:2)

在厨师中你可以

  1. encrypted data bags或使用chef-vault存储密码或API令​​牌。然后在厨师进行配置时对它们进行解密(使用共享密钥加密数据包,使用Chef客户端的现有PKI使用chef-vault)。
  2. 使用例如environment参数调用外部软件时设置环境变量。 execute resource
  3. 不确定,在这里写什么 - 我说你不能真正管理它们。这样,您只需为需要它的命令设置变量,而不是对于整个厨师来说。

答案 1 :(得分:0)

使用puppet,首选方法可能是将秘密存储在Hiera文件中,这些文件只是普通的YAML文件。这意味着所有机密都存储在主机上,与清单文件分开。

答案 2 :(得分:0)

truecrypt虚拟加密磁盘是跨平台的,独立于工具。将其挂载为读写以更改其包含的文件中的机密,卸载它然后将加密的磁盘映像提交/推送到版本控制中。为自动化安装只读。

答案 3 :(得分:0)

ansible-vault可用于加密敏感数据文件。但是,像Jenkins这样的CI服务器并不是存储访问凭据的最安全的地方。如果添加Hashicorp Vault和Ansible Tower / AWX,则可以为多个团队提供安全的解决方案。