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

eik*_*ega 7 continuous-integration automation puppet chef-infra ansible

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

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

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

Ste*_*ing 2

在厨师中你可以

  1. 将密码或 API 令牌存储在加密数据包中或使用Chef-vault。然后,当 Chef 进行配置时,它们会被解密(使用共享密钥的加密数据包,以及 Chef-vault 使用 Chef 客户端的现有 PKI)。
  2. environment使用例如执行资源的参数调用外部软件时设置环境变量。
  3. 不确定,在这里写什么——我想说你并没有真正管理它们。这样,您仅为需要它的命令设置变量,而不是为整个厨师运行设置变量。