我的构建和生产部署由一个用户特定用户使用密钥连接,该用户在部署期间共享,并在计算机启动期间复制密钥。
此用户部署,共享ssh密钥,允许ssh到任何prod机器及其之间。
现在我的面料构建以用户 Jenkins 运行。
如何指示结构以特定用户身份执行所有操作(在这种情况下部署)?相当于sudo su deploy
我不希望在每项任务中都执行prefix
或with
。而是设置一个全局变量。
詹金斯参与了轮组,并有sudo perms
答案 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。