2016-10-04 145 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克隆/回购是在控制器计算机上)。这是我的一个疏忽 - 感谢您的反馈 –