automatiser l'utilisation de SSH local clé pour le déploiement git avec ansible
Je suis en train de travailler avec vagrant et ansible. Je veux automatiser le déploiement rôle de l'ansible (Vous pouvez consulter mon repo ici).
Pour cela, je suis en train de déployer mon local de clé ssh sur mon VPS et mon vagabond guest machine (je suis en train SSH agent de transfert).
OBJECTIF
Automatiser le processus de déploiement avec git en utilisant ansible. Je l'ai déjà fait cela:
---
- name: read-write git checkout from github
git: repo={{ repository }} dest=/home/site
Où:
---
# Variables here are applicable to all host groups
repository: [email protected]:dgnest/dgnest.git
PROBLÈME
Quand je fais: "vagrant provision", la console s'arrête ici:
TASK: [deployment | read-write git checkout from github] **********************
C'est parce que je n'ai pas les clefs ssh.
J'AI ESSAYÉ
Je voudrais utiliser le key_file option que le git module de ansible est. Mais il échoue également.
---
- name: read-write git checkout from github
git: repo={{ repository }} dest=/home/site key_file=/home/oscar/.ssh/id_rsa.pub
Une autre option est de copier mes ~/ssh/id_rsa.pub dans chaque VPS et vagabonde, mais mon problème dans ce cas est à manipuler avec tous les différents utilisateurs. Vagrant utilise le "vagabond" de l'utilisateur et mon VPS utilise un autre, donc j'ai dû mettre mon ssh local clé dans chacun de ces utilisateurs?
Espère que vous pourrez m'aider. Merci.
Mise à JOUR:
J'ai l'automatisation de la @leucos réponse (Merci). La copie privée et publique des clés rsa. Je partage ce lien avec la mise en œuvre.
- La copie privée les clés RSA est vraiment une mauvaise idée. Le partage des clés privées est vraiment une mauvaise idée. Par exemple, faites-vous confiance à vos coéquipiers (et tous les autres membres du personnel qui a accès au serveur distant) que vous partagez avec eux l'accès à vos dépôts privés? Si vous n'êtes pas garder votre clé privée privée.
Vous devez vous connecter pour publier un commentaire.
Si vous choisissez le
key_file
façon, je suppose que la clé doit être sur le VPS/vagrant machine. Vous pouvez donc les copier d'abord. Notez que vous avez besoin d'une clé privée ici, pas de public.Pour votre deuxième option, vous pourriez pousser votre clé à des utilisateurs spécifiques selon le type d'instance. Supposons que l'utilisateur en VPS est vpsuser, et que vous déployez pour la plupart sur ces VPS, vous pouvez faire :
group_vars/tous :
group_vars/vagrant
Ensuite, vous pourriez avoir une playbook comme :
Cependant, je n'ai aucune idée de comment le mot de passe pour la télécommande de la clé privée peut être demandé (je ne pense pas que ansible permet l'authentification de l'agent de transfert par défaut (case
-vvvv
de sortie), vous pourriez avoir à jouer avec votre~/.ansible.cfg
).Je vous suggère d'utiliser une clé spécifique pour le déploiement (avec lecture seule permanentes sur votre dépôt git). De cette façon, votre clé privée ne laissera pas votre machine. Faire de ce spécial clé sans mot de passe. Je pense que l'échange de sécurité est acceptable dans la mesure où
- il seulement de protéger votre code,
- votre code est vérifié sur la machine où la clé privée est donc le jeu est déjà sur.
Une autre option est de distribuer votre application à partir de votre caisse en utilisant ansible : faire une archive, pour copier des fichiers dessus, décompressez, et vous êtes fixés. De cette façon, vous n'avez pas besoin de quitter les paramètres de sécurité sur votre VPS.
Bonne chance.
Vous ne pas avez plus qu'à copier votre local de clé SSH à des serveurs distants. Au lieu de cela, il vous suffit de créer un fichier nommé
ansible.cfg
dans le répertoire que vous exécutez des scripts de déploiement de, et de mettre les paramètres suivants:Voilà, maintenant votre identité locale est transmis aux serveurs distants vous gérez avec Ansible.
man ssh
sur le-A
option: "Agent de transfert doit être activée avec prudence. Les utilisateurs avec la possibilité de contourner les autorisations de fichier sur l'hôte distant (pour l'agent UNIX socket de domaine) peut accéder à l'agent local transmis par le biais de la connexion. Un attaquant ne peut pas obtenir le matériel de clé à partir de l'agent, cependant ils peuvent effectuer des opérations sur les clés qui leur permettent de s'authentifier en utilisant les identités chargé dans l'agent."