Automation 如何为连续部署管理环境变量

Automation 如何为连续部署管理环境变量,automation,continuous-integration,chef-infra,puppet,ansible,Automation,Continuous Integration,Chef Infra,Puppet,Ansible,因此,现在的一种常见做法是将连接字符串和密码作为环境变量,以避免它们被放入文件中。这一切都很好,但当我尝试使用一些配置管理工具(如Salt/Ansible或Chef/Puppet)设置连续部署工作流时,我不确定如何实现这一点 具体来说,在使用上述配置管理工具的环境中,我有以下问题: 您将连接字符串/密码/密钥与代码库分开存储在哪里? 您是否将这些项目保存在某种类型的代码回购(git等)中 您是否在工具中使用了一些内置结构 你如何保证这些物品的安全 您是否跟踪更改/备份这些项目,如果是,如何跟

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

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

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

  • 将密码或API令牌存储在或使用。然后,在chef进行资源调配时对其进行解密(使用使用共享机密的加密数据包,使用chef客户端的现有PKI使用chef vault)
  • 使用的
    环境
    参数调用外部软件时设置环境变量,例如
  • 不确定,在这里写什么——我想说你并没有真正管理好它们。这样,您可以只为需要的命令设置变量,而不是整个chef运行

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

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

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

    加密数据包是一种方法。我认为chef Vault是一种方法;-)但这仍然存在于风投中,不是吗?不一定。在我的地方,我们有一个VCS中的模块,供所有环境使用,每个环境都有特定的hieradata。