2014-01-08 16 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中創建的。