2015-02-10 33 views
1

我是Ansible的新手。試圖將一些文件複製到遠程機器上。 我能夠複製到遠程服務器的tmp文件夾,但無法複製到特定的用戶文件夾。Ansible:無法從遠程機器切換用戶

我認爲如果我們可以切換到特定的用戶是可能的。但我無法使用劇本。

請幫我解決這個問題。

問候, KP

回答

1

這是一個權限問題。用於連接到主機的用戶無權寫入其他用戶文件夾。

如果您有權訪問用戶帳戶(例如,您的SSH密鑰被接受),你可以簡單地通過remote_user定義每個任務的用戶:

- copy: src=... 
     dest=... 
    remote_user: <SET_OWNER_HERE> 

如果你用不上,你可以使用sudo標誌來執行具有root權限的任務。但要確保你正確設置權限或用戶可能無法讀/寫這些文件:

- copy: src=... 
     dest=... 
     owner=<SET_OWNER_HERE> 
     group=<SET_GROUP_HERE> 
     mode=0644 
    sudo: yes 

此外,您還可以定義作爲與sudo_user執行sudo命令的用戶名:

- copy: src=... 
     dest=... 
    sudo: yes 
    sudo_user: <SET_OWNER_HERE> 

如果sudo需要您輸入密碼,則必須提供該密碼,否則該任務將永久掛起而不會出現任何錯誤消息。

您可以在全球範圍內ansible.cfg定義此:

ask_sudo_pass=True 

或者當你打電話給你的劇本傳遞選項:

ansible-playbook ... --ask-sudo-pass 
+0

謝謝您的答覆。我嘗試了第二種方法,但是遊戲書被卡在文件複製任務中。 – 2015-02-11 09:58:00

+0

這可能意味着任務停留在sudo密碼提示處。如果sudo需要您輸入密碼,您可以配置Ansible在播放過程中向您發問:Global setting:http:在命令行中輸入「pass」。我更新了包含此信息的答案。 – udondan 2015-02-11 10:15:04

+0

--- - hosts:test tasks: - name:Copy Files copy:src =/local_user/test.sh dest =/remote/location/another/user(kp)/ bin/owner = kp group = kp mode = 0644 sudo:yes命令我使用的是ansible-playbook -i hosts劇本/ commands.yml --user sshuser --ask -pass --ask-sudo -pass時su密碼問我給密碼用於登錄到遠程機器上的kp用戶。那是對的嗎? – 2015-02-11 11:19:25