【问题标题】:Fabric: do everything as a particular userFabric:以特定用户的身份做所有事情
【发布时间】:2012-06-04 23:57:05
【问题描述】:

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

这个用户部署,共享 ssh 密钥,允许 ssh 到任何 prod 机器以及它们之间。

现在我的结构构建以用户 Jenkins 身份运行。

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

我不想在每项任务中都使用prefixwith。而是设置一个全局变量。

Jenkins 在轮组中并且有 sudo perms

【问题讨论】:

    标签: python deployment build fabric


    【解决方案1】:

    如果我正确理解了您的问题,您希望以其他用户身份执行命令而不使用前缀或 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。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2014-11-24
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多