在生产环境中使用 Capistrano 提供多环境凭证:如何设置?



如何将RAILS_MASTER_KEY设置为生产服务器?

我正在使用Capistrano部署(到nginx/乘客(Rails 6应用程序(Ruby 2.7.0(。 要让生产应用程序访问凭据,我正在尝试向它提供 master.key 我可以将本地 env(开发(主密钥获取到服务器的共享/配置文件夹。 尽管如此,部署应用最终会失败。

要到达那里 :

  • 在本地环境中的第 1 步,我为生产环境生成主密钥并添加相关变量。我也尝试过使用主密钥。
  • 步骤 2 我手动将该密钥添加到服务器共享/配置/主密钥文件中

我从卡皮斯特拉诺部署命令得到以下响应:

活动支持::加密文件::丢失密钥错误:缺少用于解密文件的加密密钥。向您的团队索要您的主密钥并将其写入/home/deploy/tribe/releases/20200130135612/config/credentials/production.key 或将其放入 ENV['RAILS_MASTER_KEY']。

假设这可能是一个计时问题,我也使用相同的密钥更新当前/配置文件夹并收到相同的响应。

显然,我没有在应有的位置获得主密钥。

卡皮斯特拉诺链接文件任务如下

append :linked_files, "config/master.key"
set :linked_files, %w{config/master.key}
namespace :deploy do
namespace :check do
before :linked_files, :set_master_key do
on roles(:app), in: :sequence, wait: 10 do
unless test("[ -f #{shared_path}/config/master.key ]")
upload! 'config/master.key', "#{shared_path}/config/master.key"
end
end
end
end
end

我所做的是我不仅添加了链接 master.key,还添加了 production.key,因为日志抱怨的是 production.key,而不是 master

这是在我的部署.rb 中添加的

set :linked_files, %w{config/credentials/production.key}

现在卡皮斯特拉诺工作了,对秘密没有任何问题

相关内容

最新更新