原因分析:
还是着急用了,没有首先去看官方的第一手文档
报错信息:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: SyntaxError: invalid syntax
fatal: [localhost]: FAILED! => {
"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1640316635.85-35343-270231667758987/AnsiballZ_docker_login.py\", line 102, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1640316635.85-35343-270231667758987/AnsiballZ_docker_login.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1640316635.85-35343-270231667758987/AnsiballZ_docker_login.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible.modules.cloud.docker.docker_login', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python2.7/runpy.py\", line 176, in run_module\n fname, loader, pkg_name)\n File \"/usr/lib64/python2.7/runpy.py\", line 82, in _run_module_code\n mod_name, mod_fname, mod_loader, pkg_name)\n File \"/usr/lib64/python2.7/runpy.py\", line 72, in _run_code\n exec code in run_globals\n File \"/tmp/ansible_docker_login_payload_NFbK0Z/ansible_docker_login_payload.zip/ansible/modules/cloud/docker/docker_login.py\", line 133, in <module>\n File \"/usr/lib/python2.7/site-packages/docker-5.1.0_dev-py2.7.egg/docker/__init__.py\", line 2, in <module>\n from .api import APIClient\n File \"/usr/lib/python2.7/site-packages/docker-5.1.0_dev-py2.7.egg/docker/api/__init__.py\", line 2, in <module>\n from .clientimport APIClient\n File \"/usr/lib/python2.7/site-packages/docker-5.1.0_dev-py2.7.egg/docker/api/client.py\", line 222\n f'Error while fetching server API version: {e}'\n ^\nSyntaxError: invalid syntax\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
解决办法:
官方文档
For Python 2.7, you need to use a version between 2.0.0 and 4.4.4 since the Python package for Docker removed support for Python 2.7 on 5.0.0. You can install the specific version of the Docker SDK for Python as follows:
$ pip install 'docker==4.4.4'
实际过程:
因为我这里是的使用场景是用在项目现场的,所以无法连接互联网,所以打算通过离线方式安装上面的docker模块,然后这里就是各种环境问题,我这里先是用本地环境测试的,本地做好了才方便做成roles方案直接调用,现在说说自己踩过的坑或走的弯路吧。
1.环境信息
# yum 源使用的是本地内网搭建的,现场也是如此
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021
$ ansible --version
ansible 2.9.25
$ python --version
Python 2.7.5
2.错误的思路
# 先学下模块用法
$ ansible-doc -l|grep docker
# 直接测试登录模块
$ cat test.yaml
---
- name: test module docker_login
hosts: localhost
tasks:
- name: Log into private registry and force re-authorization
docker_login:
registry: harbor.dockerregistry.com
username: admin
password: Harbor12345
reauthorize: