Ansible: versi docker-py tidak diperiksa dengan benar

Dibuat pada 10 Sep 2016  ·  44Komentar  ·  Sumber: ansible/ansible

JENIS MASALAH

  • Laporan Bug
NAMA KOMPONEN

integrasi buruh pelabuhan (tapi bukan modul buruh pelabuhan) (https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/docker_common.py#L154)

VERSI ANSIBLE
ansible 2.1.1.0
KONFIGURASI

Tidak ada

OS / LINGKUNGAN

OS X, El Cap

RINGKASAN

docker-py baru saja mengubah versinya menjadi 1.10 . Ini adalah kode yang memeriksa versi:

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

Beginilah cara python membandingkan string:

>>> "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

LANGKAH UNTUK REPRODUKSI

  1. Instal docker-py terbaru pada mesin target.
  2. Jalankan perintah buruh pelabuhan apa saja:
docker_service:
   ...
HASIL YANG DIHARAPKAN

Jalankan buruh pelabuhan

HASIL NYATA
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

Komentar yang paling membantu

Sungguh menakjubkan betapa rapuhnya ansible sebagai lingkungan dan jumlah upaya yang dituntut penggunanya untuk menjaga fungsionalitas dasar tetap berfungsi hanya dengan sedikit peningkatan. Luar biasa.

Semua 44 komentar

Dikonfirmasi, Debian Jessie. Sepertinya ... mendesak.

Perhatikan bahwa docker-compose 1.8.0 membutuhkan docker-py> 1.9, <2.0, jadi jika Anda secara khusus menyetel docker-py ke versi yang lebih rendah dari 1.9.0 dan menginstal docker-compose 1.8.0, itu akan meningkatkan docker-py hingga 1.10.1 yang saat ini memutus perbandingan versi string. Setel docker-py ke 1.9.0 untuk mencegahnya.

Kebanyakan orang yang menggunakan paket galaxy normal untuk buruh pelabuhan akan mendapatkan file
versi terbaru secara default - pasti bisa merusak banyak hal

Pada hari Jumat, 9 Sep 2016, 19:09 Shane StClair [email protected] menulis:

Perhatikan bahwa docker-compose 1.8.0 membutuhkan docker-py> 1.9, <2.0, jadi jika Anda
secara khusus mengatur docker-py ke versi yang lebih rendah dari 1.9.0 dan menginstal
docker-compose 1.8.0 itu akan memutakhirkan docker-py hingga 1.10.1 yang mana
saat ini merusak perbandingan versi string. Setel docker-py ke 1.9.0
cegah ini.

-
Anda menerima ini karena Anda yang membuat utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246081820,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AAeFZ-OYb5eZHpd8TFlSrX7Z9WimPuIwks5qohE9gaJpZM4J5lx9
.

FWIW, saya tidak menyetel docker-py ke versi tertentu dan ini tetap menghancurkan saya.

Yup, saya dapat mengonfirmasi di Ubuntu 16.04.

Apakah ada solusi sementara?

Penurunan versi docker-py ke 1.9.0 mungkin adalah yang termudah

Pada hari Senin, 12 Sep 2016, 07:59 Kevin Wittek [email protected] menulis:

Apakah ada solusi sementara?

-
Anda menerima ini karena Anda yang membuat utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/ansible/ansible/issues/17495#issuecomment -246375443,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AAeFZ0KPLl-PYEN80CH6YRvAwuVekYq1ks5qpWjLgaJpZM4J5lx9
.

@tokopedia
Jika Anda menggunakan pip untuk menginstal docker-py:
pip install 'docker-py==1.9.0'
Atau jika versi 1.10.1 telah diinstal:
pip install 'docker-py==1.9.0' --force-reinstall

@vietbui Terima kasih, bahkan bekerja dengan menentukan versi docker-py dalam peran angstwad.docker_ubuntu.

Halo teman-teman, kapan Anda akan merilis versi baru dengan perubahan ini digabungkan? Apakah Anda berencana untuk segera melakukannya? Terima kasih!

Menghadapi masalah ini juga
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 yang diturunkan seperti yang disarankan oleh

Jika Anda menggunakan pip untuk menginstal docker-py:
pip instal 'docker-py == 1.9.0'
Atau jika versi 1.10.1 telah diinstal:
pip install 'docker-py == 1.9.0' --force-instal ulang

Saya pikir ini akan diperbaiki di 2.1.2.0 tetapi saya mencoba hari ini:
"Kesalahan: versi docker-py adalah 1.10.3. Versi minimum yang dibutuhkan adalah 1.7.0."

Ini, menurut saya, adalah masalah yang mendesak!

Saya menerima kesalahan dengan berbagai versi docker-compose dan docker-py, pada akhirnya saya memutuskan
docker-compose (1.8.1) dan docker-py (1.7.0) di klien saya. Tidak ada lagi kesalahan dan buruh pelabuhan-compose.yml saya sedang dikonsumsi dengan benar. Versi yang memungkinkan adalah 2.1.2.0

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

Di Ubuntu 16.04

ansible --version
ansible 2.1.1.0

Edit: sama dengan 2.1.2.0

Mengapa tidak melakukan hal seperti ini?

(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

Perbandingan itu berhasil:

/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 berfungsi dengan baik. Hanya saja patch baris tunggal ini tidak berkomitmen untuk 2.1 cabang ..

Op 6 okt. 2016 pada 02:32 heeft Sean Ochoa [email protected] het volgende geschreven:

Mengapa tidak melakukan hal seperti ini?

(Pdb) '1.10.0'> '1.7.0'
Salah
(Pdb) [int (i) untuk saya di '1.10.0'.split ('. ')]> [Int (i) untuk saya di' 1.7.0'.split ('.')]
Benar
-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub, atau nonaktifkan utasnya.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "judul ":" ansible / ansible "," subtitle ":" GitHub repository "," 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": "Open in GitHub", "url": " https://github.com/ansible/ansible "}}, "update": {"snippet": [{"icon": "PERSON", "message": " @sochoa di # 17495: Mengapa tidak melakukan hal seperti ini? \ 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 ":" View Issue "," url ":" https: // github. com / ansible / ansible / issues / 17495 # Issuecomment -251837619 "}}}

@sochoa Bekerja dengan perbaikan Anda. Saya telah memperbarui file secara manual.
Saya akan mengawasi masalah ini untuk tambalan resmi.

Menghadapi masalah yang sama. Adakah ETA pada rilis resmi yang akan memasukkan ini?

Saya mengalami masalah yang sama, saya pikir itu akan diselesaikan dalam versi 2.1.2, tetapi masalah itu masih ada. Apakah akan diselesaikan di 2.2.0?

Saya masih memiliki masalah ini dengan kemungkinan 2.1.2.0

Juga mengalami masalah ini di 2.1.2.0 yang berarti salah satu server saya dihentikan dan tidak dimulai ulang

Masalah yang sama di sini, 2.1.2.0

Akan diperbaiki pada Ansible 2.2.0. :(

Anda dapat secara manual mem-patch file lib / ansible / module_utils / docker_common.py:
https://github.com/ansible/ansible/pull/17496/files

Karena jumlah orang yang terkena dampak, sepertinya masalah yang perlu diperbaiki dengan cepat (berlawanan dengan menunggu rilis berikutnya).
Sistem otomatis gagal dan satu-satunya solusi adalah memperbaiki secara manual di seluruh infrastruktur - bukan yang kami harapkan dari modul yang memungkinkan.

Apakah akan ada rilis patch untuk 2.1 dengan perbaikan segera? Serius, ini bug yang merusak, kita seharusnya tidak menunggu rilis minor = /

Akhirnya saya harus memaksa penginstalan docker-py==1.9.0 di pipeline Integrasi Berkelanjutan kami agar penerapan otomatis berfungsi. Saya harap ada perbaikan untuk 2.1 segera atau rilis yang lebih cepat dari 2.2

Untuk inilah versi tambalan itu, perbaikan seharusnya disertakan dalam rilis yang diperbarui jauh lebih cepat! Saya telah menambal docker_common.py sesuai dengan komentar di atas dan berhasil (meskipun tidak mudah ditemukan dalam instalasi homebrew).

Pada hari Jumat, 14 Okt 2016 jam 20.55 +0100, "lukasged" [email protected] menulis:

Akhirnya saya harus memaksa pemasangan docker-py == 1.9.0 di pipeline Integrasi Berkelanjutan kami agar penerapan otomatis berfungsi. Saya berharap ada perbaikan untuk 2.1 segera atau rilis yang lebih cepat dari 2.2

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub, atau nonaktifkan utasnya.

Saya mendapat kesalahan yang sama juga :-(

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

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

dan tugas docker-compose akan memaksa untuk menginstal docker-py terbaru ...

Saya yakin v2.2.0.0-0.1.rc1 memperbaiki ini.

Sebagai solusinya, Anda dapat menginstal RC1: pip install git+https://github.com/ansible/[email protected]

Saya menyadari bahwa cabang devel direpresentasikan sebagai 2.3.0 (melalui pip show ansible)
Masalah ini diperbaiki di cabang itu juga.

Perubahan ini telah di-backport ke stable-2.1 untuk 2.1.3RC3. Akan mem-backport ke stable-2.2 jika ada kandidat rilis 2.2.0 lainnya, jika tidak, seharusnya untuk 2.2.1.

nice @nitzmahone , persis seperti yang kebanyakan dari kita cari: +1:

👍

... dan akan ada 2.2.0RC4, jadi yang ini telah dipilih untuk digunakan.

+1

Sepertinya 2.2.0 telah keluar, yang memperbaiki masalah ini. Baik?

@brgn Benar! Itu bagus, meskipun beralih ke 2.2.0 yang memungkinkan memberi saya masalah lain. Tampaknya mematahkan satu peran galaksi yang mungkin populer untuk mysql . Jadi berhati-hatilah jika Anda menggunakan peran itu.

Ya, dan 2,2 tampaknya juga merusak docker_service : face_with_head_bandage: https://github.com/ansible/ansible-modules-core/pull/5159

Baik

Op 3 nov. 2016 om 23:55 heeft lukasged [email protected] het volgende geschreven:

@brgn Benar! Itu bagus, meskipun beralih ke 2.2.0 yang memungkinkan memberi saya masalah lain. Tampaknya melanggar satu peran galaksi yang mungkin populer untuk mysql. Jadi berhati-hatilah jika Anda menggunakan peran itu.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub, atau nonaktifkan utasnya.

{"api_version": "1.0", "publisher": {"api_key": "05dde50f1d1a384dd78767c55493e4bb", "name": "GitHub"}, "entity": {"external_key": "github / ansible / ansible", "judul ":" ansible / ansible "," subtitle ":" GitHub repository "," 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": "Open in GitHub", "url": " https://github.com/ansible/ansible "}}, "update": {"snippet": [{"icon": "PERSON", "message": " @lukasged in # 17495: @dbrgn Benar! Itu bagus, meskipun beralih ke kemungkinan 2.2.0 memberi saya masalah lain. Tampaknya merusak satu peran galaksi yang mungkin populer untuk mysql . Jadi berhati-hatilah jika Anda menggunakan peran itu. "}]," action ": {" nama ":" Lihat Masalah "," url ":" https://github.com/ansible/ansible/issues/17495#issuecomment -258298370 "}}}

Sungguh menakjubkan betapa rapuhnya ansible sebagai lingkungan dan jumlah upaya yang dituntut penggunanya untuk menjaga fungsionalitas dasar tetap berfungsi hanya dengan sedikit peningkatan. Luar biasa.

Tidak dapat memverifikasi perbaikan di Ansible 2.2 karena rusak karena alasan lain di 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

Karena tiket ini ditutup, kemungkinan besar tidak akan ada yang melihat komentar di dalamnya. Silakan buka tiket baru jika Anda mengalami masalah.

@ darkn3rd - sepertinya masalah Anda adalah ketidakcocokan antara perintah docker_common.py dan python3 pada mesin yang dikelola. Solusinya adalah menjalankan dengan python2. Saya akan melihat membuat PR untuk masalah python3.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat