2015-04-20 59 views
1

我使用名爲homesick的gem來自動將我的點文件符號鏈接到我的主目錄,並將其用作啓動我的開發環境的完美手冊的一部分。我有以下任務來使用思鄉寶石和命令模塊來克隆點文件。在ansible playbook中添加sudo_user使命令永久使用

- name: Use homesick to clone dotfiles repo 
    command: homesick clone smcabrera/castillo-cabrera 
    sudo_user: "{{ username }}" 
    args: 
    chdir: /home/{{ username }} 
    creates: /home/{{ username }}/.homesick/repos/castillo-cabrera 

這工作得很好。很簡單 - 思鄉寶石有一個叫做克隆的子命令,它克隆了github的dotfile回購。我花了一點時間才弄清楚的是,我需要sudo_user,因爲否則它將使用root用戶和root用戶的主目錄(/ root),並且dotfiles將在那裏被克隆 - 而不是我想要的。使用sudo_user解決了這個問題。

但是,然後我嘗試做同樣的事情來執行符號鏈接,它不起作用。請看下圖:

- name: Use homesick to symlink dotfiles to home directory 
    command: homesick symlink castillo-cabrera 
    sudo_user: {{ username }} 
    args: 
    chdir: /home/{{ username }} 
    creates: /home/{{ username }}/.zshrc 

很難知道什麼是錯誤的,因爲它甚至沒有完成,失敗,這樣我可以看到錯誤信息 - 它只是掛了一個半小時前,我決定去試一下其他。這可能是因爲這只是一個需要很長時間的過程 - 除非如果我沒有運行相同的任務而沒有sudo_user,它根本沒有時間,我收到一條消息。

- name: Use homesick to symlink dotfiles to home directory 
    command: homesick symlink castillo-cabrera 
    args: 
    chdir: /home/{{ username }} 
    creates: /home/{{ username }}/.zshrc 

changed: [localhost] => {"changed": true, "cmd": ["homesick", "symlink", "castillo-cabrera"], "delta": "0:00:00.623685", "end": "2015-04-20 16:40:29.100744", "item": "", "rc": 0, "start": "2015-04-20 16:40:28.477059", "stderr": "", "stdout": " identical /root/.oh-my-zsh-custom\n identical /root/.irbrc\n 

...(等)

任何想法可能是怎麼回事?

編輯:這是我一直在運行的劇本命令:

sudo ansible-playbook -s playbook.yml -i inventory -v 

回答

2

試圖做一些與sudo通常需要一個密碼,所以Ansible可能是卡在密碼提示,想着還有更多沒有意識到它必須進入某種東西。有兩種方法來告訴Ansible要使用的密碼爲sudo

  • 運行ansible-playbook-K--ask-sudo-pass選項,這樣它會提示你輸入密碼。
  • 存儲由主機名,像這樣以後將它添加在清單文件中的密碼:

    server.example.com ansible_sudo_pass=hunter2