在审查了这个令人惊叹的论坛之后,我认为是时候加入...
我在部署多个Docker的剧本上遇到问题。
Docker服务已在两台机器上安装并运行。
根据此网站,您需要做的就是按照说明进行操作,一切都会正常进行。 :)
https://www.techrepublic.com/article/how-to-deploy-a-container-with-ansible/
(我使用的剧本在上面的链接中)
但是在按照步骤操作并使用了剧本之后,我遇到了这个错误。
TASK [Pull default Docker image] ******************************************************************************************************
fatal: [192.168.1.38]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (docker_image) module: source Supported parameters include: api_version, archive_path, buildargs, cacert_path, cert_path, container_limits, debug, docker_host, dockerfile, filter_logger, force, http_timeout, key_path, load_path, name, nocache, path, pull, push, repository, rm, ssl_version, state, tag, timeout, tls, tls_hostname, tls_verify, use_tls"}
很高兴您在此问题上的支持。
答案 0 :(得分:5)
Ansible 2.8中添加了source: pull
选项。由于您使用的是Ansible 2.5.1,因此该选项不可用。
您可以使用2.8或更高版本,也可以仅从剧本中删除该行,即可使用:
- name: Pull default Docker image
docker_image:
name: "{{ default_container_image }}"
您将无法保证已从注册表中新提取图像。如果这对您来说很重要,则可以先删除该图像的任何本地缓存版本:
- name: Remove Docker image
docker_image:
name: "{{ default_container_image }}"
state: absent
- name: Pull default Docker image
docker_image:
name: "{{ default_container_image }}"
答案 1 :(得分:1)
因此,根据Ansible 2.5的doc of docker_image
模块,确实没有参数source
。
尽管如此,doc of version 2.9告诉我们它已经“增加了2.8”!因此,您必须更新Ansible版本,才能按原样运行链接的剧本。那是您最好的选择。
否则,另一种选择是保留版本2.5并简单地删除第38行。
(-) source: pull
但是我不知道2.8之前的默认行为如何,所以我无法保证您会达到预期的效果!
答案 2 :(得分:1)
最后,让这本剧本唱歌! :)
我做了以下事情。
将Ansible升级到上面提到的版本后,我得到了以下错误消息:无法导入所需的python库(适用于Python的Docker SDK(python> == 2.7)或docker-py(python 2.6))在 osboxes (这是我的机器)上python ...
因此,在搜索了此错误之后,我找到了以下URL:
https://neutrollized.blogspot.com/2018/12/cannot-have-both-docker-py-and-docker.html
因此,我决定从我的计算机中删除docker,包括使用pip安装的python(我使用pip-list命令查看是否安装了docker,然后使用以下命令将其删除:pipuninstall)。
>从我的机器上删除Docker之后,我又将剧本添加了一个剧本。安装docker-compose(这就是解决我的问题的方法,它负责处理python版本)。
只需遵循我在答案中附加的网址即可。
答案 3 :(得分:0)
根据Ansible模块docker_image
中的错误消息,似乎使用了一个参数,该参数尚未为该模块实现(但)。错误消息还列出了可用的参数。与documentation for the module中相同。
另一个可能的原因可能是某些参数的行缩进不正确。