Git Stellen Sie PHP App auf mehrere EC2-Knoten bereit

8

Ich habe eine Menge Artikel gelesen, die über Post-Update-Hooks sprechen, um Webseiten mit Git zu implementieren, aber ich verstehe nicht, wie dies auf EC2 gemacht wird.

Ich möchte die Auto Scaling-Funktion von EC2 verwenden, um automatisch Mikro / kleine Knoten hinter meinem Load-Balancer hinzuzufügen, die auf einem AMI meines Servers basieren.

Wie kann ich es so machen:

  1. Meine Knoten holen beim Start automatisch die neueste Version der Site aus dem Repository

  2. Aktualisiere alle Knoten (trigger sofort wenn möglich), auch diejenigen, die dynamisch hinzugefügt werden (also keine Konfiguration, die über das hinausgeht, was das AMI bereits enthielt).

Nick 05.04.2011, 02:29
quelle

1 Antwort

6

Was Automations-Tools betrifft, könnten Sie Puppet oder Chef verwenden, um die Arbeit zu erledigen. Die dahinter stehenden Unternehmen bieten auch gehostete Dienste an:

Persönlich verwenden wir scalarium , um unsere Server zu implementieren und zu skalieren.

Wenn Sie das nicht möchten, können Sie beispielsweise eigene Skripte für den Chef erstellen, die auf einer Instanz bereitgestellt werden sollen. Es gibt bereits eine Bereitstellungsressource , die sehr gut mit Git funktioniert. Ich würde wahrscheinlich Chef-Solo empfehlen, da dies keinen laufenden Chef-Server erfordern würde (hat viele Abhängigkeiten und braucht Management) oder etwas wie littlechef , mit dem Sie ein chef-server-ähnliches Setup ausführen können, aber ohne den laufenden Chef-Server.

Das Ziel wäre beispielsweise, ein privates AMI einzurichten, das Amazon zum automatischen Skalieren verwendet.

In diesem AMI werden Ihre Dienste (HTTP usw.), ruby ​​und chef installiert ( gem install chef ) und was Sie sonst noch benötigen und dann wiederum die Skripts ausführen, um Ihre Instanz weiter einzurichten und den Code von GIT bereitzustellen.

Wenn Sie diesen Pfad wählen, können Sie natürlich so viele Dienste einrichten, wie Sie mit dem AMI benötigen, und dann brauchen Sie nur den Chef, um den Code zu implementieren.

Hier ist ein Beispiel zum Auschecken von Code von GIT mit einem Kochrezept:

%Vor%

Dies würde Ihren Produktionszweig von git auschecken.

Da dies standardmäßig als root ausgeführt wird, sollten Sie Ihren deploykey in /root/.ssh/id_rsa haben. Sie können das tun, bevor Sie das private AMI erstellen. Sie können den Schlüssel auch vor der Bereitstellung von einem sicheren Speicherort abrufen:

%Vor%

(Ich habe das gerade abgetippt, ich habe das nicht ausgeführt - aber ich bin mir fast sicher, dass es funktionieren sollte, da wir auf Nicht-EC2-Hosts etwas sehr Ähnliches machen.)

Wenn du keinen Chef-Server oder kleinen Koch machst, würde ich capistrano um Koch-Solo erneut auszuführen - z um eine neue Revision des Codes zu überprüfen. Capistrano würde Befehle an die Instanz senden (über ssh), für die ich wahrscheinlich ein Konto ohne Passwort mit einem SSH-Schlüssel usw. einrichten würde.

Lass es mich wissen, wenn du mehr Hinweise brauchst!

    
Till 19.11.2011 16:37
quelle

Tags und Links