Fabric:作为特定用户做所有事情

时间:2012-06-04 23:57:06

标签: python deployment build fabric

我的构建和生产部署由一个用户特定用户使用密钥连接,该用户在部署期间共享,并在计算机启动期间复制密钥。

此用户部署,共享ssh密钥,允许ssh到任何prod机器及其之间。

现在我的面料构建以用户 Jenkins 运行。

如何指示结构以特定用户身份执行所有操作(在这种情况下部署)?相当于sudo su deploy

我不希望在每项任务中都执行prefixwith。而是设置一个全局变量。

詹金斯参与了轮组,并有sudo perms

1 个答案:

答案 0 :(得分:7)

如果我正确理解您的问题,您希望以不使用前缀或使用。

的方式执行另一个用户的命令

如果你愿意,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。