
Ich suche nach bewährten Methoden für die Bereitstellung mit Capistrano.
Ich möchte mit einer kurzen Beschreibung beginnen, wie ich die Bereitstellung früher durchgeführt habe.
Capistrano ist lokal auf dem Computer eines Entwicklers installiert. Ich habe gedacht, ich würde ein Gateway mit der Capistrano-Option bereitstellen :gateway
. Zuerst dachte ich, dass :gateway
ich mit der Option nur eine SSH-Verbindung zum Gateway-Host brauche, aber es stellte sich heraus, dass ich eine SSH-Verbindung brauche (Öffentlicher Schlüssel) an alle Hosts, auf denen ich bereitstellen möchte.
Ich möchte eine bequeme und sichere Möglichkeit zum Bereitstellen von Anwendungen finden.
Wenn zum Beispiel ein neuer Entwickler seine Arbeit aufnimmt, ist es viel bequemer, seineÖffentlicher Schlüsselnur auf dem Gateway-Server und nicht auf allen Anwendungsservern. Andererseits möchte ich nicht, dass er eine Verbindung zu bestimmten Servern hatsshzum Gateway: Nur weil er Entwickler ist, muss er nur Bereitstellungen durchführen.
Wenn Sie bewährte Methoden für die Bereitstellung mit Capistrano kennen, teilen Sie uns dies bitte mit.
Antwort1
Capistrano wurde von Anfang an unter der Annahme entwickelt, dass SSH die Grundlage für die gesamte Verwaltung ist. Die als Gateway verwendete Maschine muss SSH-Verbindungen sowohl akzeptieren als auch ausgeben können. Daran führt kein Weg vorbei. Ihre Entwickler erhalten SSH-Zugriff auf das Gateway.
Sie haben einige Anforderungen:
- Einfaches Hinzufügen neuer Entwickler zur Liste der autorisierten Schlüssel Ihrer Bereitstellungsziele
- Ich möchte Entwicklern kein vollständiges Terminal auf der Gateway-Box zur Verfügung stellen
Sie müssen entscheiden, wie Sie die Schlüsselvergabe für Ihre Bereitstellungsziele handhaben möchten. Hier haben Sie zwei Hauptoptionen:
- Verwenden Sie einen allgemeinen Schlüssel. Jeder erhält einen, und dieser wird in das Image/die Ziele eingebrannt.
- Verwenden Sie spezifische Schlüssel, jeder erhält seinen eigenen und Sie verwalten die Liste der autorisierten Schlüssel über etwas wieMarionetteoderKoch.
Die zweite Option ist die sicherste, funktioniert aber am besten, wenn Sie über ein Konfigurationsmanagementsystem verfügen. Sie sollten unbedingt eines verwenden, und es kann sogar die Datei authorized_keys für den Gateway-Server bereitstellen.
Sie haben einige Möglichkeiten, die Aktionen von Entwicklern einzuschränken, wenn diese sich per SSH mit Ihrem System verbinden.
- Einschränken des SSH-Shell-Zugriffs auf den Debian-Server
- Benutzerdefinierte Openssh-Shell
- So beschränken Sie die Shell des Benutzers auf die Ausführung von Shell-Programmen
Abhängig davon, wie Capistrano tatsächlich mit einem Gateway zusammenarbeitet, können einige dieser Faktoren die Funktion beeinträchtigen. Daher sollten Tests durchgeführt werden. Möglicherweise ist eine vollständige Shell erforderlich, damit es funktioniert.