我需要能够在多个 Linux 服务器之间共享 ENV 变量。这些变量由我的应用程序使用。我希望让这些变量在所有服务器之间保持同步。
应用程序部署目前由 Capistrano 处理。遗憾的是,我无法简单地将变量存储在 cap 配方中,因为它们包含敏感数据,我不想将它们以未加密的形式提交到我的存储库中。
我的一个想法是使用 git-encrypt 创建一个加密的存储库,将数据存储在那里,然后以某种方式通过 Capistrano 或 Chef 在应用程序部署期间签出存储库,解密并在每个应用程序服务器中获取 ENV 变量。
我想知道之前是否有人解决过这个问题。
答案1
对于基于 AWS 的设置,我使用用户输入来进行服务器推出脚本,使用一些逻辑来计算/决定环境变量,并在推出框时将它们写入 /etc/environment 文件中。
这样我就不必将变量存储在任何存储库中,它们的值是在服务器推出时计算的,并且在服务器的生命周期内都是不变的(我总是可以通过 SSH 更改它们,但这不是理想的方式)。此外,同一类型的所有服务器将始终具有相同的 Env 变量,因此我不必担心同步它们(在我的情况下,这些 Env 变量不应该改变)