2017-05-22 2 views
2

Je tente de déployer dans un environnement intermédiaire avec Capistrano. J'ai mis en place mes secrets cryptés et testé sur le développement, et les secrets apparaissent disponibles. J'ai configuré la configuration de l'environnement intermédiaire pour read_encrypted_secrets = true. Mon fichier de clé secrète est ignoré. J'ai ssh'ed dans mon environnement de mise en scène et placé le secrets.yml.key dans le répertoire app_name/current/config. Je déploie sur une instance AWS EC2. Je n'utilise pas la variable d'environnement RAILS_MASTER_KEY.Rails 5.1 Capistrano Déploiement avec secrets.yml.key

Quand je lance cap staging deploy et choisir mon étiquette de version, je lance cette erreur lors de deploy:migratingbundle exec rake db:migrate

01 rake aborted! 
01 Rails::Secrets::MissingKeyError: Missing encryption key to decrypt secrets with. Ask your team for your master key and put it in ENV["RAILS_MASTER_KEY"] 

J'ai la bonne clé sur le serveur, pourquoi ne pas trouver rails/utiliser?

Répondre

7

Le chemin app_name/current est juste un lien symbolique vers la nouvelle version de Capistrano. Cela signifie que le contenu de app_name/current/config change chaque fois que vous exécutez cap staging deploy. Si vous ajoutez manuellement un fichier à ce répertoire via ssh, il ne sera plus présent lors du déploiement suivant.

La bonne façon d'ajouter un fichier de configuration au serveur qui persistera dans tous les déploiements consiste à le placer dans le répertoire partagé . Spécifiquement:

  1. Via ssh (ou scp), placez votre fichier de clé à app_name/shared/config/secrets.yml.key.
  2. Localement, en deploy.rb, ajouter ce qui suit:

    append :linked_files, "config/secrets.yml.key" 
    

Maintenant, exécutez cap staging deploy.

+0

Cela a fonctionné _perfectly_! Merci beaucoup. – VitaminMarc

+0

@VitaminMarc s'il vous plaît envisager d'accepter la réponse – AlexD