Mit einem Kontextmanager namens Fabric.api.settings können Sie arbeiten, während Sie die Ausführungsbenutzer mitten in einer bestimmten Aufgabe wechseln.
Zum Beispiel
Wenn Sie eine solche Aufgabe erstellen möchten, schreiben Sie den folgenden Code.
operationwithswitchinguser.py
from fabric.api as fb
import cuisine as cs
def refresh(branch="origin/master", restart="yes"):
with fb.settings(
cs.mode_user(),
user="www",
secretkey="./fixtures/id_rsa",
):
with fb.cd("/home/www/repo"):
cs.run("git fetch")
cs.run("git checkout %s" % branch)
if restart == "yes":
with fb.settings(
cs.mode_sudo(),
user="admin",
secretkey="./fixtures/id_rsa",
):
cs.run("/etc/init.d/nginx restart")
cs.run("/etc/init.d/supervisord restart")
Einstellungen Kontextmanager
Es hat solche Spezifikationen. Mit anderen Worten
with fb.settings(
cs.mode_user(),
user="www",
secretkey="./fixtures/id_rsa",
):
Wenn Sie Code wie diesen schreiben
Es bewegt sich so.
Ich wünschte, ich hätte diese Spezifikation früher bemerkt. Weil ich mich damit verschwendet habe, einen Dekorateur für den Benutzerwechsel zu schreiben.
Recommended Posts