2016-10-04 273 views
0

我正在使用ansible的git模塊(使用2.1)來提取一個repo,然後使用shell模塊更改爲下載的repo(如果shell不起作用,我可以嘗試該命令)。我有兩個include.yml文件(一個從git中抽取,另一個使用shell命令) - 角色的任務目錄中都有一個角色。 git clone可以正常工作,但即使是shell命令也沒有(它似乎無法檢測到該目錄已創建 - 即使我可以使用另一個shell轉到該目錄)。我嘗試使用wait_for(但它永遠不會返回)。我使用我的本地用戶ID完成所有任務,並使用我的ID創建了git倉庫。wait_for with ansible not working

shell.yml

--- 
- wait_for: path=/tmp/my-repos/my-proj 
- shell: cd /tmp/my-repos/my-proj 

main.yml

--- 
- include: git.yml 
- include: shell.yml 

git.yml

--- 
- name: fetching my repo 
    local_action: git repo={{ my_repo_url }} 
        dest={{ my_proj_path }} 
        accept_hostkey=yes 
        depth=10 
        version={{ my_project_version }} 
+0

問題在shell命令之前沒有使用local_action - 命令在遠程計算機上運行,​​而不是在控制器計算機上運行 –

回答

0

ISS:如何解決這個有什麼想法UE沒有使用local_action外殼命令之前 - 該命令正在遠程計算機上運行,​​而不是控制器機

--- 
- local_action: shell cd /tmp/my-repos/my-proj 
+0

您能否在此處添加「答覆接受」複選標記? –

+1

有一個時間限制,你可以接受答案 –

1

這是因爲GIT中模塊克隆本地回購和「外殼」和「wait_for」模塊是另一臺主機上執行(按照您的清單文件)

如果你的劇本要充分localhost上播放,您可以:

1)刪除 'local_action' 在git.yml

--- - name: fetching my repo git repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes depth=10 version={{ my_project_version }}

2)調用具有「本地」連接器插件您的劇本:

ansible-playbook -i "localhost," -c local main.yml

優點:可以,如果你想在遠程主機上使用這個劇本。

我不明白你爲什麼需要使用模塊'wait_for','git'模塊確保在下一個任務之前克隆存儲庫。

+0

謝謝 - 我張貼我的答案 - 我運行shell命令使用local_action(它在遠程主機上運行,​​即使認爲git克隆/回購是在控制器計算機上)。這是我的一個疏忽 - 感謝您的反饋 –

相關問題