【问题标题】:Can't get sudo commands working with Ansible无法让 sudo 命令与 Ansible 一起使用
【发布时间】:2014-01-08 23:28:30
【问题描述】:

我正在尝试使用 Ansible 来配置 Vagrant box 和 EC2 服务器。使用 --connection=local 时,它在 Vagrant 框上运行良好,但似乎只是忽略了 sudo: True 行

当我这样做时:

---
- hosts: remote
  vars_files:
    - vars.yml
  gather_facts: false
  sudo: True
  remote_user: root

  tasks:
  - name: test
    file: state=directory path=~/test

它在普通用户的主目录中创建目录,该目录归普通用户所有。用户没有密码,我可以使用带有 sudo 的命令而不会被提示输入密码。我错过了什么?

【问题讨论】:

  • 你想在哪里创建那个目录?在root 的主目录中?
  • 创建目录只是一个测试,看看谁在创建。如果 root 运行命令,如我所料,它将在 /root/test 中,如果 ubuntu 用户这样做,那么它将在 /home/ubuntu/test (每次都是这种情况)。
  • 这不是sudo 命令的工作方式...您可以通过登录到该服务器并从您的 ~/ 运行 sudo mkdir test 轻松看到这一点。您会看到它是在您所在的位置创建的,而不是在根目录的 ~/.
  • 没错,但这只是测试的一部分。第二部分是所有权。该目录在普通用户目录中创建,并归普通用户所有,这意味着根本不使用 sudo。

标签: sudo ansible ansible-playbook


【解决方案1】:

您还需要添加“sudo_user”选项。

详情:
sudo 使用 sudo_user 的值来获取用户名,并且 sudo_user 默认为 root,因此在您的示例中,您以 root 身份登录(此用户名来自“remote_user”)并执行
sudo su - root -c "mkdir ~/test"

http://docs.ansible.com/intro_configuration.html#sudo-user

是的,该目录是在 sudo_user 主目录中创建的。

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2021-03-23
    • 2018-06-09
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多