我遇到了使用 Ansible 的 Docker 模块从私有 DockerHub 存储库中提取 Docker 映像的问题,因此为了检查代码的完整性,我决定先尝试使用 shell 提取有问题的映像。这也失败了。这里发生了什么?如果我通过 SSH 连接到盒子上,我可以在 shell 中运行完全相同的命令并且它可以工作,拉取正确的图像。
孤立的示例播放:
---
- hosts: <host-ip>
gather_facts: True
remote_user: ubuntu
sudo: yes
tasks:
- include_vars: vars/client_vars.yml
- name: Pull stardog docker image [private]
shell: sudo docker pull {{stardog_docker_repo}}
- name: Tag stardog docker image [private]
shell: sudo docker tag {{stardog_docker_repo}} stardog_tag
正在输出的错误是:
failed: [<host-ip>] => {"changed": true, "cmd": "sudo docker pull <org>/<image>:latest", "delta": "0:00:01.395931", "end": "2015-08-05 17:35:22.480811", "rc": 1, "start": "2015-08-05 17:35:21.084880", "warnings": []}
stderr: Error: image <org>/<image>:latest not found
stdout: Pulling repository <org>/<image>
FATAL: all hosts have already failed -- aborting
注意:我已经清理了我的<org>
,<image>
但请放心,他们在剧本中的图像标识符和错误日志完全匹配我可以通过 ssh 在 shell 中成功运行的图像:
$ sudo docker pull <org>/<image>:latest
我知道各种 GitHub 问题(比如我在使用 Docker 模块时遇到的问题)、补丁等与docker-py
库相关的问题,但这里的问题是我只是在使用 Ansibleshell
模块。我错过了什么?