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?
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
:
Weitere Links:
env.roledefs
documentation , env.roles
documentation , execute()
documentation , Sie möchten das execute ()
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.
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.
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
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: Ссылка
Tags und Links python amazon-ec2 fabric