一つのタスクの中で実行ユーザーを切り替えたい fabric.api.settingsというコンテキストマネージャを使うと所定のタスクの途中で実行ユーザーを切り替えながら作業ができる。 例えば、 githubからpull -- wwwユーザーで作業 nginx, supervisord再起動 -- adminユーザーで作業 このようなタスクを作りたいときは以下のコードを書けば良い。 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.