0

Quelle est la bonne façon de configurer Capistrano pour déployer une application Rails dans plusieurs environnements avec des autorisations différentes requises pour chaque environnement? En d'autres termes, imaginez un scénario typique dans lequel un développeur apporte des modifications au code et pousse les modifications dans un environnement de test. Après le test, un gestionnaire de versions pousse les modifications à la production. Et ainsi de suite, avec des niveaux supplémentaires possibles entre les deux. Capistrano (même avec l'extension multi-étape de Capistrano-ext) semble être construit pour un seul utilisateur ayant des autorisations de déploiement dans n'importe quel environnement. Quelle est la configuration recommandée pour les cas où les personnes au niveau inférieur ne devraient pas pouvoir se déployer jusqu'à la production?Autorisations à déployer dans plusieurs environnements avec Capistrano

Répondre

1

Lors de la configuration de Capistrano et du déploiement, il existe des différences entre le compte d'utilisateur utilisé pour le déploiement et les personnes disposant d'autorisations pouvant être déployées.

Capistrano vous configurez l'utilisateur

set :user, 'deploy' 

Ce compte utilisateur doit exister sur chaque machine Capistrano déployer relie scénario, chaque rôle app, web, db. Il est recommandé de le configurer avec SSH key authentication.

Lorsque quelqu'un utilise le cap deploy, il se connectera aux machines avec SSH-Keys et ne fonctionnera que si vous avez installé votre clé publique sur ce compte.

Cette méthode permet à différentes personnes d'avoir un accès différent aux machines. Pour production, installez uniquement les clés SSH des personnes disposant d'un accès administrateur aux machines. Ensuite, même si quelqu'un exécute le cap deploy, cela ne fonctionnera pas car ils ne peuvent pas se connecter à l'utilisateur distant.

Nous permettons à n'importe qui d'avoir sa clé SSH sur l'environnement de transfert, mais seulement quelques personnes ont accès au serveur de production.