简体   繁体   English

Kolla-ansible openstack:Docker 版本失败

[英]Kolla-ansible openstack: Docker version failure

I have encountered a problem during a deploy of openstack pike.我在部署 openstack pike 时遇到了问题。

There's an error running pre-check command.运行预检查命令时出错。

Kolla-ansible version 6.0.0.0rc2, Ubuntu Server 16 LTS [error][1] Kolla-ansible 版本 6.0.0.0rc2,Ubuntu Server 16 LTS [错误][1]

I've found out that the required docker version is >=2.4.6 .我发现所需的 docker 版本是>=2.4.6

My current is 1.12.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 %}"} “条件检查 'result | failed or result.stdout | regex_replace('. (\\d+\\.\\d+\\.\\d+). ', '\\1') | version_compare(docker_version_min, '< ')' 失败。错误是:模板化字符串时出现模板错误:没有名为“失败”的过滤器。字符串:{% if result | failed or result.stdout | regex_replace('. (\\d+\\.\\d+\ \.\\d+). ', '\\1') | version_compare(docker_version_min, '<') %} True {% else %} False {% endif %}"}

So, I tried to upgrade it by running command所以,我尝试通过运行命令来升级它

sudo pip install -U docker==2.4.2

But docker version still says it is 1.12.6 and an error occurs.但是docker docker version还是说是1.12.6 ,报错了。

My question is : do I have to upgrade docker in other way, change something in kolla-ansible playbooks, or maybe something else?我的问题是:我是否必须以其他方式升级 docker,更改 kolla-ansible 剧本中的某些内容,或者其他内容?

PS I know pike, Ubuntu srv 16 and 6.0.0.0rc2 are a little bit outdated, but its just for my university project:) PS 我知道 pike、Ubuntu srv 16 和 6.0.0.0rc2 有点过时了,但它仅适用于我的大学项目:)

failed is not a filter but a test . failed不是filter而是test

Using tests with the filter syntax used to be allowed.过去允许使用具有过滤器语法的测试。 It has been deprecated in ansible 2.5 (with warnings) and totally removed in ansible 2.9 .它已在 ansible 2.5 中弃用(带有警告)并在 ansible 2.9 中完全删除

The correct syntax is:正确的语法是:

result is failed

Your problem is that you installed the wrong docker.您的问题是您安装了错误的 docker。

Kolla needs docker engine. Kolla 需要 docker 引擎。 You should install docker-ce by following this:您应该按照以下步骤安装 docker-ce:

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

And then try again.然后再试一次。

Also remove docker from pypi:同时从 pypi 中删除 docker:

pip uninstall  docker

And the one from apt:还有一个来自 apt 的:

sudo apt remove docker

The problem was in ansible.问题出在ansible。 Like @Zeitounator said, that script worked only in ansible 2.5 or less, so this one solved my problem:正如@Zeitounator 所说,该脚本只能在 ansible 2.5 或更低版本中运行,所以这个脚本解决了我的问题:

sudo -H pip install ansible==2.5.6

But another fail is:但另一个失败是:

TASK [prechecks: Checking docker SDK version] ******************************************************************************************* fatal: [localhost]: FAILED: => {"changed", false: "cmd", ["/usr/bin/python", "-c";任务 [预检查:检查 docker SDK 版本] ****************************************** ******************************************************致命的:[本地主机]:失败:=> {“已更改”,错误:“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": []} "import docker.print docker.version "], "delta": "0:00:00.014776", "end": "2020-01-21 14:35:06.561138", "failed_when_result": true, "msg": "非零返回码", "rc": 1, "start": "2020-01-21 14:35:06.546362", "stderr": "Traceback (最近调用最后):\n 文件\"\ ", 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": []}

solution is:解决方案是:

sudo pip install docker

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM