【问题标题】:Not able to become a different sudo user using ansible in GCE在 GCE 中使用 ansible 无法成为不同的 sudo 用户
【发布时间】:2016-04-04 15:36:01
【问题描述】:
  • 我有两个 GCE 实例(比如 node1、node2)。
  • 我已经在 node1 中安装了 ansible,并且正在运行一个脚本来在 node2 中启动一个服务。
  • 在 GCE 实例中以 root 身份禁用 SSH,因此我在 node1 中创建了一个单独的用户 (devops) 并以 devops 用户身份运行脚本。
  • 两个实例都没有设置root密码,所以我可以成为root用户并成功执行whoami命令。
  • 但是当我在创建一个单独的用户后尝试相同的操作时,它要求“sudo:需要密码”但没有设置 root 用户密码。

我尝试过的示例 ansible playbook

https://gist.github.com/pavananms/a7a99a8b1f50ea3ab70e8dddbf4cb56c

我将上述脚本作为
ansible-playbook test.yml

运行

【问题讨论】:

    标签: ansible ansible-2.x


    【解决方案1】:

    如果您不想为 app_user 设置密码,则需要将此行添加到 /etc/sudoers 文件中:

    app_user        ALL=(ALL:ALL) ALL
    

    但是如果你在这里看到我的测试用例:

    https://gist.github.com/sherlockholmes/63607e10457d260c5d7c61bfc1f74fad

    密码是第一个用户的,在我的例子中是 vagrant 用户。您可以将此密码作为额外变量传递。

    --extra-vars='ansible_become_pass=4nsible'
    

    【讨论】:

    • 感谢您的帮助。还有一个问题,我可以使用 ssh 密钥而不是密码来成为其他用户,因为默认情况下,脚本运行程序 devops 没有设置密码,因此为了上述工作,我需要为 devops 用户设置密码。
    • 还尝试在成为 app_user 之前将 app_user ALL=(ALL:ALL) ALL 添加到 /etc/sudoers 文件中,它显示“超时(12 秒)等待权限提升提示”这可能是问题所在。我的新剧本如链接gist.github.com/pavananms/a7a99a8b1f50ea3ab70e8dddbf4cb56c
    【解决方案2】:

    如果您使用 devops 用户进行 ansible ssh 登录并尝试成为 sudo,则将以下条目添加到目标/远程服务器上的 /etc/sudoers 文件。

    devops ALL=(ALL) NOPASSWD:ALL
    

    在命令中以纯文本形式传递任何密码对于环境来说是有风险的,传递 ansible playbook 或命令总是使用 ansible vault

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2016-11-11
      • 2023-03-20
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      相关资源
      最近更新 更多