Un gestionnaire de contexte appelé fabric.api.settings vous permet de travailler tout en changeant d'utilisateur d'exécution au milieu d'une tâche donnée.
Par exemple
Si vous souhaitez créer une telle tâche, écrivez le code suivant.
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")
gestionnaire de contexte de paramètres
Il a de telles spécifications. En d'autres termes
with fb.settings(
cs.mode_user(),
user="www",
secretkey="./fixtures/id_rsa",
):
Si vous écrivez un code comme celui-ci
Ça bouge comme ça.
J'aurais aimé avoir remarqué cette spécification plus tôt. Je me perdais à écrire un décorateur pour le changement d'utilisateur.