Kolla-ansible openstack: Docker 版本失败

Kolla-ansible openstack: Docker version failure

我在部署 openstack pike 时遇到问题。

运行 预检查命令出错。

Kolla-ansible version 6.0.0.0rc2, Ubuntu Server 16 LTS [error][1]

我发现所需的 docker 版本是 >=2.4.6

我现在是1.12.6.

fatal: [localhost]: FAILED! => {"msg": "The conditional check 'result | failed or result.stdout | regex_replace('.(\d+\.\d+\.\d+).', '\1') | version_compare(docker_version_min, '<')' failed. The error was: template error while templating string: no filter named 'failed'. String: {% if result | failed or result.stdout | regex_replace('.(\d+\.\d+\.\d+).', '\1') | version_compare(docker_version_min, '<') %} True {% else %} False {% endif %}"}

所以,我尝试通过运行命令升级它

sudo pip install -U docker==2.4.2

但是docker version还是说是1.12.6,出现错误。

我的问题是:我是否必须以其他方式升级docker,更改kolla-ansible playbooks 中的某些内容,或者其他内容?

PS 我知道派克,Ubuntu srv 16 和 6.0.0.0rc2 有点过时了,但它只是用于我的大学项目:)

failed 不是 filter but a test

使用以前允许的过滤器语法进行测试。已经 deprecated in ansible 2.5 (with warnings) and totally removed in ansible 2.9.

正确的语法是:

result is failed

你的问题是你安装错了docker。

Kolla 需要 docker 引擎。您应该按照以下步骤安装 docker-ce:

https://docs.docker.com/install/linux/docker-ce/ubuntu/

然后重试。

同时从 pypi 中删除 docker:

pip uninstall  docker

以及来自 apt 的那个:

sudo apt remove docker

问题出在ansible中。正如@Zeitounator 所说,该脚本只能在 ansible 2.5 或更低版本中运行,所以这个脚本解决了我的问题:

sudo -H pip install ansible==2.5.6

但另一个失败是:

TASK [prechecks : Checking docker SDK version] ******************************************************************************************* fatal: [localhost]: FAILED! => {"changed": false, "cmd": ["/usr/bin/python", "-c", "import docker; print docker.version"], "delta": "0:00:00.014776", "end": "2020-01-21 14:35:06.561138", "failed_when_result": true, "msg": "non-zero return code", "rc": 1, "start": "2020-01-21 14:35:06.546362", "stderr": "Traceback (most recent call last):\n File \"\", line 1, in \nImportError: No module named docker", "stderr_lines": ["Traceback (most recent call last):", " File \"\", line 1, in ", "ImportError: No module named docker"], "stdout": "", "stdout_lines": []}

解决方案是:

sudo pip install docker