Ich habe ein vorgefertigtes Fabric-Skript erhalten ... aber ich weiß nicht, was ich tue ...> < Weil es so war, habe ich die Wörter zusammengefasst, die häufig vorkommen.
Wenn Sie überhaupt kein vorhandenes Skript haben Ich frage mich, ob ich es natürlich verstehen kann, wenn ich mir das Tutorial von Anfang an ansehe.
Übrigens das offizielle Tutorial http://fabric-ja.readthedocs.org/ja/latest/tutorial.html
env In '** env ** ironment' wird es als Umgebungswörterbuch bezeichnet. Es ist eine sogenannte Einstellungsdatei, Anstelle einer Konfigurationsdatei ** Ein Wörterbuchobjekt, auf das in einem Skript global verwiesen werden kann ** Es ist eine korrekte Erkennung. Es ist ein Wörterbuch, aber Sie können es mit env.hosts wie ein Attribut aufrufen, um die Verwendung zu vereinfachen.
Es ist sowieso das wichtigste Element, das in Fabric verwendet wird.
Übrigens gibt es eine Funktion namens settings (), aber wenn Sie sie mit der with-Klausel verwenden Dies hat zur Folge, dass nur dieser Bereich auf eine bestimmte Einstellung festgelegt werden kann.
from fabric.api import settings
def hoge():
with settings(warn_only=True):
return run('hoge hoge')
Ist env.warn_only = False standardmäßig nur im Bereich der with-Klausel warn_only = True. Es scheint, dass Sie bei der Verwendung von Django eine besondere Bedeutung in den Einstellungen finden, aber dies ist alles in Fabric.
local () ist lokal. Mit anderen Worten, führen Sie den Befehl lokal auf dem laufenden PC aus. Run () führt dagegen den Befehl in der Remote-Zielumgebung aus. Wenn Sie in run () local ('cd / path / mypath') ausführen
Überspringen Sie den run () -Prozess von Ihrem PC auf den Remote-PC ↓ Der Remote-PC verschiebt das Verzeichnis nach cd / path / mypath in sein lokales Verzeichnis
Es ist wie es ist. Es gibt auch sudo (), das von sudo ausgeführt wird.
role Lassen Sie sich nicht von der Übersetzung der Rolle täuschen. Es ist nur eine Gruppe von Hosts. Es ist in env.roledefs festgelegt.
env.roledefs = {
'web-servers': ['web1', 'web2']
}
Dies zielt auf Web1- und Web2-Server ab, wenn diese auf einem Webserver bereitgestellt werden. Anstatt jedes Mal ['web1', 'web2'] auszuführen, wäre es einfacher, wenn Sie nur 'Webserver' angeben könnten. Mehr bedeutet es nicht. Wenn der Rollenschlüssel denselben Namen wie der Befehlsname hat, ist es für Fabric-Anfänger schwierig zu verstehen. Wenn Sie sich beruhigen, ist das alles.
Übrigens kann es auch mit Dekorateuren verwendet werden,
@role('web-servers')
def deploy():
'''do deploy'''
In diesem Fall wird der Befehl für die Rolle ausgeführt.
@task
Bei Anwendung auf eine Funktion mit
** "Dies ist eine machbare Aufgabe" **
Stoff wird es aufheben.
Das heißt, es wird in `` $ fab -l aufgeführt. Es ist eine relativ neue Funktion, wenn Sie diesen Dekorator verwenden Beachten Sie, dass Funktionen ohne ** `@ task
nicht in
$ fab -l``` ** angezeigt werden.
Ich habe es absichtlich zu einem Taskdekorateur gemacht, weil es auch eine task () -Funktion gibt, aber es gibt die Möglichkeit, diese direkt zu verwenden Es gibt so etwas fast nicht, also müssen Sie sich keine Sorgen machen.
execute Die Bedeutung ist leicht verwechselt mit run und local, aber sie ist verwirrend ** Rufen Sie die Fabric-Taskfunktion von einer anderen Taskfunktion aus auf. ** **. Mit anderen Worten kann die Verarbeitung verschachtelt werden. Der Unterschied zum normalen Funktionsaufruf ist ** Die Host- und Rolleneinstellungen für jede Aufgabe werden unverändert angewendet ** Da ist in. Daher können Sie Aufgaben intuitiv verschachteln, ohne über die Details nachzudenken. Zum Beispiel als Verwendung
Wenn es jede Aufgabenfunktion von gäbe
def bereitstellen()
execute(Holen Sie sich den neuesten Quellcode)
execute(Server neu starten)
Sie sollten so etwas tun.
Plötzlich bekam ich ein vorgefertigtes Skript und sah mir den Inhalt an, aber ich verstehe nicht! Es war eine Sammlung von Wörtern, die zu sein schienen. Die offizielle Dokumentation sollte leichter verständlich sein, wenn diese allein Sinn macht!
Recommended Posts