4

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

此用户deploy具有共享的 ssh 密钥,允许 ssh 到任何产品机器以及它们之间。

现在我的结构构建作为用户Jenkins运行。

如何指示fabric 以特定用户身份执行所有操作(在本例中为部署)?相当于sudo su deploy

我不想在每项任务中都做一个prefix或。with而是设置一个全局变量。

詹金斯在轮组中并且有 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 回答