Ansible: версия docker-py проверена некорректно

Созданный на 10 сент. 2016  ·  44Комментарии  ·  Источник: ansible/ansible

ТИП ПРОБЛЕМЫ

  • Сообщение об ошибке
КОМПОНЕНТ НАЗВАНИЕ

интеграция докера (но не модуль докера) (https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/docker_common.py#L154)

ДОСТУПНАЯ ВЕРСИЯ
ansible 2.1.1.0
КОНФИГУРАЦИЯ

Никто

ОС / СРЕДА

OS X, Эль Кап

РЕЗЮМЕ

docker-py только что повысил свою версию до 1.10 . Это код, который проверяет версию:

  154         if docker_version < MIN_DOCKER_VERSION:
  155             self.fail("Error: docker-py version is %s. Minimum version required is %s." % (docker_version,
  156      

Вот как python сравнивает строки:

>>> "1.5" < "1.7"
True
>>> "1.9" < "1.7"
False
>>> "1.10.1" < "1.7"
True
>>> "1.10.1" < "1.7.0"
True
>>> "1.10" < "1.7.0"
True

ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ

  1. Установите последнюю версию docker-py на целевую машину.
  2. Выполните любую команду докера:
docker_service:
   ...
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

Запустить докер

ФАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ
fatal: [demos]: FAILED! => {"changed": false, "failed": true, "msg": "Error: docker-py version is 1.10.1. Minimum version required is 1.7.0."}
affects_2.1 affects_2.2 bug docker

Самый полезный комментарий

Честно говоря, поражает, насколько хрупка ансибл как среда и сколько усилий она требует от своих пользователей для поддержания работоспособности основных функций после небольшого обновления. Замечательно.

Все 44 Комментарий

Подтверждено, Debian Jessie. Кажется ... срочно.

Обратите внимание, что docker-compose 1.8.0 требует docker-py> 1.9, <2.0, поэтому, если вы специально устанавливаете docker-py на версию ниже 1.9.0 и устанавливаете docker-compose 1.8.0, он обновит docker-py вплоть до 1.10.1, которая в настоящее время прерывает сравнение версий строк. Установите docker-py на 1.9.0, чтобы предотвратить это.

Большинство людей, использующих обычный пакет galaxy для докеров, получат
последняя версия по умолчанию - определенно может сломать много вещей

В пятницу, 9 сентября 2016 г., 19:09 Шейн СтКлер [email protected] написал:

Обратите внимание, что docker-compose 1.8.0 требует docker-py> 1.9, <2.0, поэтому, если вы
специально установив docker-py на версию ниже 1.9.0 и установив
docker-compose 1.8.0 он полностью обновит docker-py до 1.10.1, который
в настоящее время прерывает сравнение версий строки. Установите docker-py на 1.9.0
предотвратить это.

-
Вы получаете это, потому что вы являетесь автором темы.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246081820,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAeFZ-OYb5eZHpd8TFlSrX7Z9WimPuIwks5qohE9gaJpZM4J5lx9
.

FWIW, я не устанавливаю docker-py для какой-либо конкретной версии, и это все равно сломало меня.

Ага, я могу подтвердить это на Ubuntu 16.04.

Существует ли временное решение?

Понижение версии docker-py до 1.9.0, вероятно, самый простой

В понедельник, 12 сентября 2016 г., 7:59 Кевин Виттек написал на [email protected] :

Существует ли временное решение?

-
Вы получаете это, потому что вы являетесь автором темы.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246375443,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAeFZ0KPLl-PYEN80CH6YRvAwuVekYq1ks5qpWjLgaJpZM4J5lx9
.

@kiview
Если вы используете pip для установки docker-py:
pip install 'docker-py==1.9.0'
Или, если уже установлена ​​версия 1.10.1:
pip install 'docker-py==1.9.0' --force-reinstall

@vietbui Спасибо, даже сработало, указав конкретную версию docker-py в роли angstwad.docker_ubuntu.

Привет, ребята, когда вы собираетесь выпустить новую версию с объединенными изменениями? Планируете ли вы это сделать в ближайшее время? Благодаря!

Столкнувшись с этой проблемой также
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Error: docker-py version is 1.10.3. Minimum version required is 1.7.0."}

Пониженная версия docker-py, предложенная

Если вы используете pip для установки docker-py:
pip install 'docker-py == 1.9.0'
Или, если уже установлена ​​версия 1.10.1:
pip install 'docker-py == 1.9.0' --force-переустановить

Я думал, что это будет исправлено в 2.1.2.0, но сегодня попробовал:
«Ошибка: версия docker-py - 1.10.3. Минимальная необходимая версия - 1.7.0».

Это, на мой взгляд, актуальная проблема!

Получал ошибки с разными версиями docker-compose и docker-py, в итоге остановился на
docker-compose (1.8.1) и docker-py (1.7.0) на моем клиенте. Ошибок больше нет, и мой docker-compose.yml используется правильно. Версия Ansible - 2.1.2.0

+1 !!
"Error: docker-py version is 1.10.3. Minimum version required is 1.7.0."}

В Ubuntu 16.04

ansible --version
ansible 2.1.1.0

Изменить: то же самое с 2.1.2.0

Почему бы не сделать что-нибудь подобное?

(Pdb) '1.10.0' > '1.7.0'
False
(Pdb) [int(i) for i in '1.10.0'.split('.')] > [int(i) for i in '1.7.0'.split('.')]
True

Это сравнение работает:

/usr/lib/python2.7/dist-packages/ansible/module_utils/docker_common.py

154         if [int(i) for i in docker_version.split('.')] < [int(i) for i in MIN_DOCKER_VERSION.split('.')]:
155             self.fail("Error: docker-py version is %s. Minimum version required is %s." % (docker_version,
156                                                                                            MIN_DOCKER_VERSION))

LooseVersion отлично работает. Просто этот однострочный патч не был привязан к ветке 2.1 ..

Оп 6 окт. 2016 в 02:32 heeft Sean Ochoa [email protected] het volgende geschreven:

Почему бы не сделать что-нибудь подобное?

(Pdb) '1.10.0'> '1.7.0'
Ложь
(Pdb) [int (i) для i в '1.10.0'.split ('. ')]> [Int (i) для i в' 1.7.0'.split ('.')]
Правда
-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "title ":" ansible / ansible "," subtitle ":" Репозиторий GitHub "," main_image_url ":" https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png " , "avatar_image_url": " https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png ", "action": {"name": "Открыть в GitHub", "url": " https://github.com/ansible/ansible "}}, "updates": {"snippets": [{"icon": "PERSON", "message": " @sochoa in # 17495: Почему бы не сделать что-то подобное? \ R \ n \ r \ n \r\n(Pdb) '1.10.0' \u003e '1.7.0'\r\nFalse\r\n(Pdb) [int(i) for i in '1.10.0'.split('.')] \u003e [int(i) for i in '1.7.0'.split('.')]\r\nTrue\r\n "}]," action ": {" name ":" Просмотреть проблему "," url ":" https: // github. ru / ansible / ansible / issues / 17495 # issuecomment -251837619 "}}}

@sochoa Это работает с вашим исправлением. Я обновил файл вручную.
Я буду следить за этой проблемой для выпуска официального патча.

Столкнувшись с той же проблемой. В какое время прибытия в официальный релиз это будет включено?

У меня такая же проблема, думал, что она будет решена в версии 2.1.2, но она все еще существует. Будет ли решено в 2.2.0?

У меня все еще есть эта проблема с ansible 2.1.2.0

Также есть эта проблема в ansible 2.1.2.0, что означает, что один из моих серверов был остановлен и не перезапущен

Такая же проблема здесь, 2.1.2.0

Будет исправлено на Ansible 2.2.0. :(

Вы можете вручную пропатчить файл lib / ansible / module_utils / docker_common.py:
https://github.com/ansible/ansible/pull/17496/files

Из-за количества людей, затронутых проблемой, похоже, что проблема заслуживает быстрого исправления (в отличие от ожидания следующей версии).
Автоматические системы выходят из строя, и единственное решение - вручную исправить всю инфраструктуру, а не то, что мы ожидаем от доступного модуля.

Будет ли скоро выпущен патч для 2.1 с исправлением? Серьезно, это серьезная ошибка, нам не следует ждать второстепенного релиза = /

Наконец, мне пришлось принудительно установить docker-py==1.9.0 в наших конвейерах непрерывной интеграции, чтобы автоматическое развертывание работало. Я надеюсь, что скоро появится исправление для 2.1 или более быстрый выпуск 2.2

Это то, для чего нужны версии патчей, исправление должно было быть включено в обновленную версию намного быстрее! Я пропатчил docker_common.py в соответствии с приведенным выше комментарием, и он сработал (хотя его непросто найти в установке homebrew).

Пт, 14 октября 2016 г., в 20:55 +0100, "lukasged" [email protected] написал:

Наконец, мне пришлось принудительно установить docker-py == 1.9.0 в наших конвейерах непрерывной интеграции, чтобы работало автоматическое развертывание. Я надеюсь, что скоро будет исправление для 2.1 или более быстрый выпуск 2.2.

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

У меня тоже такая же ошибка :-(

- pip: name=docker-py version=1.9.0 state=forcereinstall
  when: upgrade_pip | success

- pip: name=docker-compose state=latest
  when: upgrade_pip | success

и задача docker-compose заставит установить последнюю версию docker-py ...

Я считаю, что v2.2.0.0-0.1.rc1 исправляет это.

В качестве обходного пути вы можете установить RC1: pip install git+https://github.com/ansible/[email protected]

Я понял, что ветвь devel представлена ​​как 2.3.0 (через pip show ansible)
Эта проблема исправлена ​​и в этой ветке.

Это изменение было перенесено в стабильный 2.1 для 2.1.3RC3. Будет выполнен обратный перенос на стабильный 2.2, если есть еще один релиз-кандидат 2.2.0, в противном случае он должен быть в 2.2.1.

хороший @nitzmahone , именно то, что большинство из нас ищет: +1:

👍

... ааа и будет 2.2.0RC4, так что этот был выбран как вишенка для поездки.

+1

Похоже, что недоступна версия 2.2.0, которая устраняет эту проблему. Правильно?

@dbrgn Верно! Это здорово, хотя переход на ansible 2.2.0 вызвал у меня еще одну проблему. Кажется, это нарушает одну популярную роль ansible galaxy для mysql . Так что будьте осторожны, если используете эту роль.

Да, и 2.2, похоже, тоже ломает docker_service : face_with_head_bandage: https://github.com/ansible/ansible-modules-core/pull/5159

Правильно

Оп 3 ноя. 2016 в 23:55 heeft lukasged [email protected] het volgende geschreven:

@dbrgn Верно! Это здорово, хотя переход на ansible 2.2.0 вызвал у меня еще одну проблему. Кажется, это нарушает одну популярную роль ansible galaxy для mysql. Так что будьте осторожны, если используете эту роль.

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "title ":" ansible / ansible "," subtitle ":" Репозиторий GitHub "," main_image_url ":" https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png " , "avatar_image_url": " https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png ", "action": {"name": "Открыть в GitHub", "url": " https://github.com/ansible/ansible "}}, "updates": {"snippets": [{"icon": "PERSON", "message": " @lukasged in # 17495: @dbrgn Верно! Это здорово, хотя переход на ansible 2.2.0 вызвал у меня еще одну проблему. Кажется, это нарушает одну популярную роль ansible galaxy для mysql . Так что будьте осторожны, если используете эту роль. "}]," action ": {" name ":" Просмотреть проблему "," url ":" https://github.com/ansible/ansible/issues/17495#issuecomment -258298370 "}}}

Честно говоря, поражает, насколько хрупка ансибл как среда и сколько усилий она требует от своих пользователей для поддержания работоспособности основных функций после небольшого обновления. Замечательно.

Невозможно проверить исправление в Ansible 2.2, так как оно ломается по другой причине в Mac OS X:

Traceback (most recent call last):\n  File \"/var/folders/79/4dttv20s6p30d78_yqmr3jjh0000gn/T/ansible_c_jdw536/ansible_module_docker_container.py\", line 652, in <module>\n    from ansible.module_utils.docker_common import *\n  File \"/var/folders/79/4dttv20s6p30d78_yqmr3jjh0000gn/T/ansible_c_jdw536/ansible_modlib.zip/ansible/module_utils/docker_common.py\", line 26, in <module>\nImportError: No module named 'urlparse'\n

Поскольку эта заявка закрыта, никто, скорее всего, не увидит к ней комментариев. Пожалуйста, откройте новый тикет, если у вас возникли проблемы.

@ darkn3rd - похоже, ваша проблема заключается в несовместимости между командой docker_common.py и python3 на управляемой машине. Обходной путь - запустить python2. Я посмотрю, как сделать PR для проблемы python3.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги