2014-01-08 22 views
4

我试图使用Ansible来配置Vagrant框和EC2服务器。它使用--connection =本地当工作在漂浮框罚款,但它似乎忽略须藤:真行无法获得使用Ansible的sudo命令

当我这样做:

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

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

它创造了普通用户的目录主目录,由普通用户拥有。用户没有密码,我可以在没有提示输入密码的情况下使用sudo命令。我错过了什么?

+0

你想在哪里创建该目录?在'root'的主目录? – Mxx

+0

创建目录只是测试谁在做创建。如果root运行命令,就像我所期望的那样,它将在/ root/test中,如果ubuntu用户那么它会在/ home/ubuntu/test(每次都是这种情况)。 – jmickela

+0

这不是'sudo'命令的工作方式......通过登录到该服务器并从〜/ run'sudo mkdir test'中轻松查看。你会发现它的确切位置是你创建的,而不是根目录的〜/。 – Mxx

回答

5

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

详情:
须藤使用sudo_user的值,以获得用户名和sudo_user默认为根,所以在您的例子中,你以根用户登录(该用户名来自“REMOTE_USER”),并做
sudo su - root -c "mkdir ~/test"

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

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