


Python Fabric implementiert Beispiele für Remote-Betrieb und -Bereitstellung
In letzter Zeit habe ich immer mehr Dinge übernommen. Die Freigabe-, Betriebs- und Wartungsarbeiten sind ziemlich mechanisch und die Häufigkeit ist ziemlich hoch, was zu Zeitverschwendung führt, aber viele Vorteile hat. Fehler beheben, testen, Repository übermitteln (2 Minuten), SSH zur Testumgebung für Pull-Bereitstellung (2 Minuten), Rsync zu den Online-Maschinen A, B, C, D, E (1 Minute), SSH zu ABCDE5 bzw. jeder Maschine wird nacheinander neu gestartet (8-10 Minuten) = 13-15 Minuten. Das Frustrierende ist, dass jeder Vorgang derselbe ist und der Befehl derselbe ist. Das Schreckliche ist, dass es auf mehreren Computern schwierig ist Die meiste Zeit wurde mit SSH, dem Eingeben von Befehlen und dem Schreiben in Skripts verschwendet, die mit einem Klick ausgeführt werden konnten. Es dauerte zwei Minuten, bis ich die Ausführungsergebnisse betrachtete entdeckte, dass Fabric Befehle für die automatisierte Bereitstellung oder den Betrieb auf mehreren Maschinen konsolidieren kann. Der Hauptgrund für die Verwendung ist, dass es einfach, benutzerfreundlich und leicht zu starten ist Natürlich können Sie auch verschiedene Shell-Befehle kombinieren. Der Unterschied zwischen antiken Artefakten und modernen Waffen
Umgebungskonfiguration
Installieren Sie das entsprechende Paket auf dem lokalen Computer und dem Zielcomputer (beachten Sie, dass beide erforderlich sind). )
sudo easy_install fabric
Es ist derzeit Version 1.6 (oder verwenden Sie pip install, dasselbe )
Nach der Installation können Sie überprüfen, ob die Installation erfolgreich war
Nach der Installation können Sie die offizielle Dokumentation durchsuchen[ken@~$] which fab /usr/local/bin/fab
Dann können Sie beginnen
Hallo Welt
Führen Sie zunächst einfache Vorgänge auf dieser Maschine aus und verschaffen Sie sich ein vorläufiges Verständnis. Die Quelle des Beispiels stammt von der offiziellen Website
Erstellen Sie ein neues Py-Skript: fabfile.py
def hello(): print("Hello world!")
[ken@~/tmp/fab$] fab hello Hello world!
[ken@~/tmp/fab$] mv fabfile.py test.py fabfile.py -> test.py [ken@~/tmp/fab$] fab hello Fatal error: Couldn't find any fabfiles! Remember that -f can be used to specify fabfile path, and use -h for help. Aborting. [ken@~/tmp/fab$] fab -f test.py hello Hello world!
Ändern fabfile.py-Skript:
def hello(name, value): print("%s = %s!" % (name, value))
[ken@~/tmp/fab$] fab hello:name=age,value=20 age = 20! Done. [ken@~/tmp/fab$] fab hello:age,20 age = 20!
Einfache lokale Operation
from fabric.api import local def lsfab(): local('cd ~/tmp/fab') local('ls')
[ken@~/tmp/fab$] pwd;ls /Users/ken/tmp/fab fabfile.py fabfile.pyc test.py test.pyc [ken@~/tmp/fab$] fab -f test.py lsfab [localhost] local: cd ~/tmp/fab [localhost] local: ls fabfile.py fabfile.pyc test.py test.pyc
Angenommen, Sie möchten jeden Tag eine Konfigurationsdatei „settings.py“ an das Repository senden (Konflikte werden hier nicht berücksichtigt). Situation)
Wenn es sich um einen manuellen Vorgang handelt:
Mit anderen Worten, Sie müssen diese Befehle einmal täglich manuell eingeben. Der sogenannte tägliche Job bedeutet, dass er jeden Tag wiederholt wird. Es ist mechanisiert. Schauen wir uns an, wie man Fabric verwendet, um eine Ein-Klick-Vervollständigung zu erreichen: (Tatsächlich kann es direkt mit Shell-Skripten durchgeführt werden, aber der Vorteil von Fab liegt hier nicht. Der Hauptzweck besteht darin, sich darauf vorzubereiten Lokale + Remote-Operationen später (Schreiben Sie ein Skript für eine einfache Wartung)cd /home/project/test/conf/ git add settings.py git commit -m 'daily update settings.py' git pull origin git push origin
from fabric.api import local def setting_ci(): local("cd /home/project/test/conf/") local("git add settings.py") #后面你懂的,懒得敲了…..
#!/usr/bin/env python # encoding: utf-8 from fabric.api import local,cd,run env.hosts=['user@ip:port',] #ssh要用到的参数 env.password = 'pwd' def setting_ci(): local('echo "add and commit settings in local"') #刚才的操作换到这里,你懂的 def update_setting_remote(): print "remote update" with cd('~/temp'): #cd用于进入某个目录 run('ls -l | wc -l') #远程操作用run def update(): setting_ci() update_setting_remote()
[ken@~/tmp/fab$] fab -f deploy.py update [user@ip:port] Executing task 'update' [localhost] local: echo "add and commit settings in local" add and commit settings in local remote update [user@ip:port] run: ls -l | wc -l [user@ip:port] out: 12 [user@ip:port] out:
Multi-Server-Mashup
#!/usr/bin/env python # encoding: utf-8 from fabric.api import * #操作一致的服务器可以放在一组,同一组的执行同一套操作 env.roledefs = { 'testserver': ['user1@host1:port1',], 'realserver': ['user2@host2:port2', ] } #env.password = '这里不要用这种配置了,不可能要求密码都一致的,明文编写也不合适。打通所有ssh就行了' @roles('testserver') def task1(): run('ls -l | wc -l') @roles('realserver') def task2(): run('ls ~/temp/ | wc -l') def dotask(): execute(task1) execute(task2)
[ken@~/tmp/fab$] fab -f mult.py dotask [user1@host1:port1] Executing task 'task1' [user1@host1:port1] run: ls -l | wc -l [user1@host1:port1] out: 9 [user1@host1:port1] out: [user2@host2:port2] Executing task 'task2' [user2@host2:port2] run: ls ~/temp/ | wc -l [user2@host2:port2] out: 11 [user2@host2:port2] out:
1 .Farbe
Sie können die Farbe ausdrucken, was beim Anzeigen von Betriebsergebnisinformationen auffälliger und praktischer ist
from fabric.colors import * def show(): print green('success') print red('fail') print yellow('yellow') #fab -f color.py show
Informationen zur Fehlerbehandlung
Standardmäßig wird eine Gruppe von Befehlen nicht weiter ausgeführt, nachdem die Ausführung des vorherigen Befehls fehlgeschlagen ist 🎜>
Eine andere Verarbeitung kann auch nach einem Fehler durchgeführt werden wird derzeit nicht verwendet. Ich werde es erneut lesen, wenn ich es später verwende 3. Passwortverwaltung Siehe die Dokumentation Eine bessere Methode zur Passwortverwaltung, ich bin etwas unerfahren und habe es nicht herausgefunden, hauptsächlich weil sich die Serverliste häufig ändert. Meine Verarbeitungsmethode ist:1.Host, Benutzer, Port, Passwort-Konfigurationsliste, alles in eine Datei geschrieben oder direkt in das Skript, das ist natürlich mehr... ...
oder
env.hosts = [ 'host1', 'host2' ] env.passwords = { 'host1': "pwdofhost1", 'host2': "pwdofhost2", }
2. Analysieren Sie es gemäß dem Schlüssel in eine Kartenverschachtelung und fügen Sie es in „Deploy“ ein.
env.roledefs = { 'testserver': ['host1', 'host2'], 'realserver': ['host3', ] } env.passwords = { 'host1': "pwdofhost1", 'host2': "pwdofhost2", 'host3': "pwdofhost3", }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Verwenden Sie Python im Linux -Terminal ...
