4

My build and production deployment is connected using a keys by one user particular user that is shared across deployment and keys copied over during the machine spin up.

This user deploy, has ssh keys shared allowing ssh to any prod machine and between them.

Now my fabric build runs as user Jenkins.

How do I instruct fabric to execute everything as a particular user(deploy in this case)?The equivalent of sudo su deploy

I don’t want to do a prefix or with in every task. Rather set a global variable.

Jenkins is in the wheel group and has sudo perms

4

1 に答える 1

7

あなたの質問を正しく理解できれば、プレフィックスや with を使用せずに、別のユーザーとしてコマンドを実行する必要があります。

sudo 関数は、必要に応じて、グローバル変数にすることができるユーザーを受け入れます。

ドキュメントから:

fabric.operations.sudo(command, shell=True, pty=True, 
                       combine_stderr=True, user=None, 
                       quiet=False, stdout=None, stderr=None)

単にタスクを呼び出すことができます

sudo(command, user=sudouser)

sudouser を別の場所に「デプロイ」するように設定します。

実際、これはコンテキストを使用することと同じです。

with settings(sudo_user=sudouser):
      sudo(command)

どちらの場合も、この sudo_user をグローバルに変更できるはずです。

于 2012-06-05T05:27:10.070 に答える