wait_for ansible 不工作
wait_for with ansible not working
我正在使用 ansible 的 git 模块(使用 ansible 2.1)拉取一个 repo,然后使用 shell 模块更改为下载的 repo(我可以尝试命令 if shell 不起作用)。我有一个角色有两个 include.yml 文件(一个从 git 中提取,第二个使用 shell 命令) - 都在角色的任务目录中。 git 克隆有效,但即使是紧随其后的 shell 命令也无效(它似乎无法检测到目录已创建 - 尽管我可以使用另一个 shell 转到该目录) .我尝试使用 wait_for(但它从来没有 returns)。我正在使用我的本地用户 ID 执行所有任务,并且 git 存储库是使用我的 ID 创建的。关于如何解决这个问题的任何想法:
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 }}
问题是在 shell 命令之前没有使用 local_action - 命令是 运行 在远程机器上,而不是控制器机器
---
- local_action: shell cd /tmp/my-repos/my-proj
这是因为 git 模块在本地克隆了一个 repo,并且 'shell' 和 'wait_for' 模块是在另一台主机上执行的(根据您的清单文件)
如果您的剧本必须在本地主机上完整播放,您可以:
1) 删除 git.yml 中的 'local_action':
---
- name: fetching my repo
git repo={{ my_repo_url }}
dest={{ my_proj_path }}
accept_hostkey=yes
depth=10
version={{ my_project_version }}
2) 使用 'local' 连接器插件调用您的剧本:
ansible-playbook -i "localhost," -c local main.yml
优点:如果需要,您可以在远程主机上使用此剧本。
我不明白你为什么需要使用模块 'wait_for','git' 模块确保在下一个任务之前克隆存储库。
我正在使用 ansible 的 git 模块(使用 ansible 2.1)拉取一个 repo,然后使用 shell 模块更改为下载的 repo(我可以尝试命令 if shell 不起作用)。我有一个角色有两个 include.yml 文件(一个从 git 中提取,第二个使用 shell 命令) - 都在角色的任务目录中。 git 克隆有效,但即使是紧随其后的 shell 命令也无效(它似乎无法检测到目录已创建 - 尽管我可以使用另一个 shell 转到该目录) .我尝试使用 wait_for(但它从来没有 returns)。我正在使用我的本地用户 ID 执行所有任务,并且 git 存储库是使用我的 ID 创建的。关于如何解决这个问题的任何想法:
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 }}
问题是在 shell 命令之前没有使用 local_action - 命令是 运行 在远程机器上,而不是控制器机器
---
- local_action: shell cd /tmp/my-repos/my-proj
这是因为 git 模块在本地克隆了一个 repo,并且 'shell' 和 'wait_for' 模块是在另一台主机上执行的(根据您的清单文件)
如果您的剧本必须在本地主机上完整播放,您可以:
1) 删除 git.yml 中的 'local_action':
---
- name: fetching my repo
git repo={{ my_repo_url }}
dest={{ my_proj_path }}
accept_hostkey=yes
depth=10
version={{ my_project_version }}
2) 使用 'local' 连接器插件调用您的剧本:
ansible-playbook -i "localhost," -c local main.yml
优点:如果需要,您可以在远程主机上使用此剧本。
我不明白你为什么需要使用模块 'wait_for','git' 模块确保在下一个任务之前克隆存储库。