我的构建和生产部署使用一个用户特定用户的密钥连接,该密钥在部署之间共享,并且在机器启动期间复制密钥。
此用户deploy具有共享的 ssh 密钥,允许 ssh 到任何产品机器以及它们之间。
现在我的结构构建作为用户Jenkins运行。
如何指示fabric 以特定用户身份执行所有操作(在本例中为部署)?相当于sudo su deploy
我不想在每项任务中都做一个prefix
或。with
而是设置一个全局变量。
詹金斯在轮组中并且有 sudo perms
我的构建和生产部署使用一个用户特定用户的密钥连接,该密钥在部署之间共享,并且在机器启动期间复制密钥。
此用户deploy具有共享的 ssh 密钥,允许 ssh 到任何产品机器以及它们之间。
现在我的结构构建作为用户Jenkins运行。
如何指示fabric 以特定用户身份执行所有操作(在本例中为部署)?相当于sudo su deploy
我不想在每项任务中都做一个prefix
或。with
而是设置一个全局变量。
詹金斯在轮组中并且有 sudo perms
如果我正确理解您的问题,您希望在不使用前缀或 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。