使用ansible docker模块 踩过的坑

原因分析:

还是着急用了,没有首先去看官方的第一手文档

报错信息:

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: 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值