Rails Multi Env учетные данные с Capistrano в производственной среде: как его настроить? - PullRequest
0 голосов
/ 30 января 2020

Как установить RAILS_MASTER_KEY на рабочий сервер?

Я использую Capistrano для развертывания (для nginx / пассажира) приложения rails 6 (ruby 2.7.0). Чтобы позволить производственному приложению получить доступ к учетным данным, я пытаюсь предоставить ему master.key. Я могу получить ключ локального главного ключа env (разработки) в папке shared / config сервера. Тем не менее, развертывание приложения в конечном итоге завершается неудачей.

Чтобы добраться:

  • шаг 1 в локальной среде, я генерирую главный ключ для производственной среды и добавляю соответствующие переменные. Я также пытался использовать мастер-ключ.
  • шаг 2 Я вручную добавляю этот ключ в файл shared / config / master.key на сервере

Я получаю следующий ответ от Capistrano Команда развертывания:

ActiveSupport :: EncryptedFile :: MissingKeyError: Отсутствует ключ шифрования для расшифровки файла. Попросите у вашей команды ваш главный ключ и напишите его в /home/deploy/tribe/releases/20200130135612/config/credentials/production.key или вставьте его в ENV ['RAILS_MASTER_KEY'].

Предполагая, что это может быть проблема синхронизации, я также обновляю текущую папку / config с тем же ключом и получаю тот же ответ.

Очевидно, я не получаю главный ключ, где он должен.

Задача файла ссылки Capistrano следующая

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

1 Ответ

0 голосов
/ 30 января 2020

Если ваши учетные данные в config/credentials/production.yml.enc, тогда ключ должен быть в config/credentials/production.key, а не config/master.key.

...