Zusammenfassung der Forschungsergebnisse zur Einführung von Fabric in das derzeit betrachtete System. Beschrieben unter Bezugnahme auf Offizielles Dokument. Es scheint, dass verschiedene Dinge getan werden können, aber es kann nicht übernommen werden, wenn es nicht vereinfacht wird. Es geht also um Folgendes. Die Version, die ich ausprobiert habe, ist wie folgt.
Die einfache Ausführung wird im folgenden Format ausgeführt
fab -f Dateiname-H Hostname-u Ausführungsmethode für den Benutzernamen
Beispiel: fab-f fab_test.py -H 192.168.1.10 -u ubuntu task_name
fab_test.py
from fabric.api import *
def task_name():
run("whoami")
sudo("whoami")
with cd("/tmp"):
run("pwd")
get Kopieren Sie die Datei lokal vom Zielserver. Überprüfen Sie den Rückgabewert .succeeded, um festzustellen, ob er erfolgreich war. .failed scheint im Fehlerfall eine Liste von Dateipfaden zu speichern.
get("Remote-Server-Pfad","Lokaler Pfad")
r = get('/home/foo/hoge', './')
print(r.succeeded) # =>Wenn True, ist es erfolgreich. Fehlschlagen, wenn falsch
print(r.failed)
put Kopieren Sie die Datei vom lokalen auf den Zielserver.
put('Lokaler Serverpfad','Remote-Server-Pfad')
r = put('./hoge',"/home/foo")
print(r.succeeded) # =>Wenn True, ist es erfolgreich. Fehlschlagen, wenn falsch
local Führen Sie den Befehl auf dem lokalen Server aus.
local("pwd")
run Führen Sie den Befehl auf dem Remote-Server aus. Der Benutzer, der ausgeführt wird, ist der Benutzer, auf den zugegriffen wurde.
run("whoami")
sudo sudo und führe den Befehl aus. Es schlägt fehl, wenn der zugreifende Benutzer keine Sudo-Berechtigungen hat.
sudo("whoami")
Es ist auch möglich, den Ausführungsbenutzer anzugeben, indem Folgendes beschrieben wird.
with settings(sudo_user='mysql'):
sudo("whoami") # prints 'mysql'
open_shell Migrieren Sie zur Remote-Server-Shell und führen Sie den Befehl aus. Wechseln Sie zu interaktiv wie es ist.
open_shell("ls")
prompt Akzeptiert Eingaben von Benutzeransagen. Es scheint, dass auch eine Validierung möglich ist. Als ich eine Zeichenfolge für den Typ int eingegeben habe, ist eine Ausnahme aufgetreten. Es scheint daher besser, sie mit einem regulären Ausdruck zu überprüfen.
r = prompt("run command ?")
run(r)
# With validation, i.e. requiring integer input:
prompt('Please specify process nice level: ', key='nice', validate=int)
# With validation against a regular expression:
release = prompt('Please supply a release name',
validate=r'^\w+-\d+(\.\d+)?$')
Stellen Sie allen Befehlen "cd XX &&" oder "YY &&" voran. Ich konnte su-nicht vor das Präfix setzen, also benutze die oben genannten Einstellungen.
with cd("/etc"):
run("cat hosts")
with prefix("cd /etc"):
run("cat hosts")
Farben können durch Beschreibung wie folgt hinzugefügt werden. Es scheint leicht zu verstehen, ob Sie den Erfolg oder Misserfolg färben. Es muss überprüft werden, ob es mit Teraterm gefärbt wird.
from fabric.colors import *
print(red("This sentence is red, except for " +
green("these words, which are green") + "."))
Die Farben sind wie folgt.
Führen Sie die Methode nur auf dem Server der Zielrolle aus.
from fabric.api import env
env.roledefs = {
'web': ['192.168.1.10', '192.168.1.11', '192.168.1.12']
}
@roles('web')
def restart_nginx():
sudo("service nginx restart ")
Die Ausführung ist wie folgt. Oben wird @roles ('web') vor der Methode beschrieben, sodass -R web zur Laufzeit weggelassen werden kann.
fab -f Ausführungsdatei[-R Rolle] task
fab -f fab_test.py -u ubuntu restart_nginx
Es gab eine Prozedur mit dem Namen "Datei fehlt" in der Prozedur, und als ich ein Skript wie manuell erstellt habe, wurde es dort gestoppt. Sie können dies vermeiden, indem Sie wie unten gezeigt "warn_only = True" eingeben.
with settings(warn_only=True):
result = sudo("ls -l /not/found/path")
[Andere Websites, die hilfreich sein können] https://blog.masu-mi.me/2015/04/11/fabric_tips.html
http://perezvon.hatenablog.com/entry/20091026/1256552181
Recommended Posts