Automatisieren Sie die Verwendung des lokalen SSH-Schlüssels für die Git-Bereitstellung mit ansible
Arbeite ich mit vagrant und ansible. Ich will das automatisieren der Bereitstellung Rolle von ansible (Sie können überprüfen, mein repo hier).
Für diesen Zweck, ich bin versucht, die Bereitstellung der lokalen ssh-Schlüssel in meinem VPS und mein Gast-Gast-Maschine (ich bin versucht SSH-agent-forwarding).
ZIEL
Automatisieren von deployment-Prozess mit git mit ansible. Ich habe dies bereits getan:
---
- name: read-write git checkout from github
git: repo={{ repository }} dest=/home/site
Wo:
---
# Variables here are applicable to all host groups
repository: [email protected]:dgnest/dgnest.git
PROBLEM
Wenn ich das mache: "vagrant provision", die der Konsole nicht mehr hier:
TASK: [deployment | read-write git checkout from github] **********************
Das ist, weil ich noch nicht einrichten des ssh-Schlüssel.
ICH VERSUCHTE
Ich würde gerne die key_file option, dass das git-Modul von ansible hat. Aber es scheitert auch.
---
- name: read-write git checkout from github
git: repo={{ repository }} dest=/home/site key_file=/home/oscar/.ssh/id_rsa.pub
Weitere option ist das kopieren meiner ~/ssh/id_rsa.pub in jeder VPS und Landstreicher, aber mein problem ist in diesem Fall zu behandeln, mit all den verschiedenen Benutzern. Vagrant nutzt die "vagierenden" Benutzer und meinem VPS nutzt einen anderen lieben, so hatte ich, um meine lokale ssh-Schlüssel in jeder dieser Benutzer?
Hoffe Ihr könnt mir helfen. Danke.
UPDATE:
Habe ich nur die automatisierte @leucos Antwort (Danke). Kopieren Sie die privaten und öffentlichen rsa-Schlüssel. Ich Teile dieser link mit der Umsetzung.
InformationsquelleAutor der Frage oskargicast | 2014-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die
key_file
Weg, meine Vermutung ist, dass die Schlüssel müssen Sie den VPS/vagrant Maschine. So möchten Sie vielleicht, um es zu kopieren ersten. Beachten Sie, dass müssen Sie einen privaten Schlüssel ist hier, nicht eine öffentliche.Für die zweite option, Sie können schieben Sie Ihre Schlüssel, um bestimmte Benutzer je nach verwendetem instance-Typ. Angenommen, der Benutzer in der VPS ist vpsuser, und die Bereitstellung meist auf diese VPS, die man tun könnte :
group_vars/alle :
group_vars/vagrant
Dann, Sie hätte ein playbook wie :
Allerdings habe ich keine Ahnung, wie das Kennwort für den remote-private-key, könnte gefragt werden (ich glaube nicht, dass ansible ermöglicht, Authentifizierungs-agent-forwarding standardmäßig (check
-vvvv
Ausgabe), haben Sie vielleicht eine Geige mit Ihrem~/.ansible.cfg
).Schlage ich vor, dass Sie einen bestimmten Schlüssel für die Bereitstellung Zwecken (mit nur-lese-Berechtigungen auf Ihrem git-repository). Dieser Weg, der eigene private Schlüssel wird nicht verlassen, Ihre Maschine. Diesen besonderen key-Passwort-weniger. Ich denke, dass der security trade-off ist akzeptabel, da
- es wird nur schützen Sie Ihr code,
- dein code ist aktiviert auf dem Rechner, auf dem der private Schlüssel ist also das Spiel ist schon vorbei.
Weitere option ist, um Ihre Anwendung verteilen Sie von Ihrem lokalen Kasse mit ansible : machen Sie einen tarball, kopieren Sie Dateien, entpacken, und Sie sind gesetzt. Auf diese Weise müssen Sie nicht zu verlassen, Sicherheits-Anmeldeinformationen auf Ihrem VPS.
Glück.
InformationsquelleAutor der Antwort leucos
Du nicht kopieren Ihrer lokalen SSH-key auf remote-Server. Stattdessen erstellen Sie einfach Datei namens
ansible.cfg
in dem Verzeichnis ausgeführt werden deployment-Skripten aus, und legen Sie die folgenden Einstellungen:Das ist es, jetzt Ihre lokale Identität wird an den remote-Server, die Sie verwalten, mit Ansible.
InformationsquelleAutor der Antwort Igor Pomaranskiy