Bereitstellung auf mehreren EC2-Servern mit Fabric

8

Ich frage mich, ob jemand Erfahrung mit der Bereitstellung auf mehreren Servern hinter einem Load Balancer auf ec2 mit Fabric

Ich habe Fabric schon eine Weile benutzt und habe keine Probleme damit, oder stelle es auf mehreren Servern bereit, aber was ich in diesem Szenario tun möchte, ist (lassen Sie mich sagen, dass ich zehn Instanzen laufen lasse) die Hälfte abmelden ( 5) der Boxen von meinem Load Balancer, stellen Sie meinen Code für sie bereit und führen Sie einen Rauchtest aus. Wenn alles gut aussieht, registrieren Sie sie erneut beim Load Balancer und löschen Sie die verbleibenden 5 Instanzen, stellen Sie sie bereit und registrieren Sie sie sie zurück zum Load Balancer.

Ich habe keine Probleme, die einzelnen Aufgaben zu erledigen (Abmeldung, Testlauf, Deployment usw.), ich weiß einfach nicht, wie ich meine Hosts auf einfache Weise organisieren soll, damit ich dann die erste Hälfte bereitstellen kann die zweite Hälfte. Fabric scheint so eingerichtet zu sein, dass sie die gleichen Aufgaben auf allen Hosts der Reihe nach ausführt (Aufgabe 1 auf Host 1, Aufgabe 1 auf Host 2, Aufgabe 2 auf Host 1, Aufgabe 2 auf Host 2 usw.)

Mein erster Gedanke war, eine Aufgabe zu erstellen, die den ersten Teil der Deregistrierung, der Bereitstellung und des Testens behandelt, und dann die env.hosts für die zweite Hälfte der Server zu setzen, aber ich fühlte, dass dies ein wenig heikel schien / p>

Hat jemand schon so etwas mit Fabric modelliert?

    
MattoTodd 01.05.2012, 20:31
quelle

6 Antworten

5

Sie können dies vereinfachen, indem Sie Rollen (für die Aggregation von Hosts) definieren und Ihre Aufgaben für eine Rolle ausführen, dann Tests ausführen und für die zweite Rolle bereitstellen.

Beispiel für roledefs :

%Vor%

Weitere Links:

Tadeck 01.05.2012, 21:47
quelle
3

Sie möchten das execute () Funktion. Dies ermöglicht Ihnen, etwas wie folgt zu tun:

%Vor%

Sie können auch alle Aufgaben delallocate, push_code und smoke_test ausführen und in der Bereitstellung einen Aufruf execute () ausführen. Anschließend führen Sie alle Deallocates aus und führen dann alle Code-Push-Vorgänge usw. durch.

Dann prüfen Sie die Art und gehen dann mit den anderen fort, die diese Aufgaben ausführen.

    
Morgan 01.05.2012 21:36
quelle
1

Ich habe Fabric erfolgreich mit Boto kombiniert. Ich bevölkere die Hosts Liste mit Boto. Mit dem Parameter @parallel können Sie die Anzahl der Hosts begrenzen, die auf einmal ausgeführt werden sollen. Der Befehl sieht folgendermaßen aus:

fab running deploy

Der Code sieht so aus;

%Vor%

Wenn Sie mit einem Unterabschnitt von Hosts umgehen müssen, würde ich vorschlagen, Tags zu verwenden.

    
Nathan Fisher 20.01.2013 01:14
quelle
0

Fabric ist nicht dafür eingerichtet, auf allen Hosts die gleichen Aufgaben auszuführen.

Abgesehen von der Tatsache, dass Sie die Hosts explizit für einen bestimmten festlegen können Aufgabe mit dem Befehlszeilenparameter -H können Sie dies Muster und dieses neuere Muster, um genau das zu tun, was Sie wollen.

Update: Hier wird es angezeigt Wie können Sie roles

verwenden?     
rantanplan 01.05.2012 20:49
quelle
0

Oder Sie könnten einfach eine Methode schreiben, die einige Variablen setzt, zum Beispiel:

%Vor%

Welche Variable Sie auf der aktuellen Maschine ändern müssen

und vor dem Ausführen des deploy-Befehls:

%Vor%

Details: Ссылка

    
Simion Agavriloaei 04.03.2014 20:23
quelle
-1

Anstatt sich mit env.hosts einzumischen, könnten Sie eine Liste (oder beliebige iterierbare) an den hosts Decorator übergeben. Etwas wie:

%Vor%

Dann können Sie Ihre env.hosts beliebig teilen und an deploy () übergeben

    
spinlok 01.05.2012 20:59
quelle

Tags und Links