Ansible: Inventaris tidak memenuhi persyaratan host_list / skrip (Ansible 2.7.1)

Dibuat pada 18 Nov 2018  ·  45Komentar  ·  Sumber: ansible/ansible



RINGKASAN


Setelah meningkatkan ke versi yang memungkinkan 2.7.1 menggunakan Homebrew di macOS, saya menerima peringatan informasi berikut saat menjalankan playbook dengan opsi verbose.

/etc/ansible/hosts did not meet host_list requirements, check plugin documentation if this is unexpected
/etc/ansible/hosts did not meet script requirements, check plugin documentation if this is unexpected

Playbook saya masih berjalan dan lengkap tanpa masalah. Saya tidak pernah mengalami masalah dengan file host saya sebelumnya, dan pesan ini juga tidak ditampilkan dengan kemungkinan 2.7.0.

JENIS MASALAH
  • Laporan Bug
NAMA KOMPONEN


plugin host_list (file inventaris)
plugin skrip (file inventaris)

VERSI ANSIBLE

ansible 2.7.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/Users/myuser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/2.7.1/libexec/lib/python3.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.1 (default, Nov  6 2018, 18:45:35) [Clang 10.0.0 (clang-1000.11.45.5)]
KONFIGURASI

ANSIBLE_PIPELINING(/etc/ansible/ansible.cfg) = True
DEFAULT_HOST_LIST(/etc/ansible/ansible.cfg) = ['/etc/ansible/hosts']
DEFAULT_REMOTE_USER(/etc/ansible/ansible.cfg) = myuser
RETRY_FILES_ENABLED(/etc/ansible/ansible.cfg) = False
OS / LINGKUNGAN


macOS High Sierra 10.13.6

LANGKAH UNTUK REPRODUKSI


Beralih ke versi yang memungkinkan 2.7.1, jalankan pedoman apa pun dengan verbose diaktifkan.

ansible-playbook test.yml -v

HASIL YANG DIHARAPKAN

Using /etc/ansible/ansible.cfg as config file
PLAY [localhost] *************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************
ok: [localhost]
HASIL NYATA


Playbook masih berjalan dan lengkap tanpa masalah. Tetapi pesan informasi verbose dari ansible menunjukkan ada yang salah dengan file inventaris saya dengan versi terbaru yang tersedia (di Homebrew).

Using /etc/ansible/ansible.cfg as config file
/etc/ansible/hosts did not meet host_list requirements, check plugin documentation if this is unexpected
/etc/ansible/hosts did not meet script requirements, check plugin documentation if this is unexpected
PLAY [localhost] *************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************
ok: [localhost]
affects_2.7 bug module python3 core

Komentar yang paling membantu

Apa pun yang dilakukan plugin yang menghasilkan checked perlu dilaporkan. Hanya mengatakan sesuatu yang tidak benar tetapi sama sekali tidak memberi petunjuk tentang apa yang salah, itu salah. Bisa jadi pesan "tidak memenuhi persyaratan" muncul tanpa alasan dan harus dihapus, atau berikan alasan nyata yang mengatakan APA, DI MANA, dan MENGAPA.

Semua 45 komentar

Hai @ mil1i , terima kasih telah mengirimkan masalah ini!

klik di sini untuk bantuan bot

File diidentifikasi dalam deskripsi:

Jika file ini tidak akurat, harap perbarui bagian component name dari deskripsi atau gunakan perintah !component bot.

klik di sini untuk bantuan bot

Ini sengaja diterapkan di https://github.com/ansible/ansible/pull/46766 untuk memberikan informasi tambahan saat menjalankan yang memungkinkan dengan -v atau lebih tinggi.

Jika Anda memiliki pertanyaan lebih lanjut, silakan mampir ke IRC atau milis:

IMO, ini bukan informasi tambahan. Jika dikatakan mengapa persyaratan tidak terpenuhi, atau bahkan hanya memiliki tautan ke persyaratan baru itu, mungkin berguna.

tidak ada persyaratan baru, ini hanya memberi Anda info tentang MENGAPA plugin dilewati, ada banyak alasan, dalam hal ini karena tidak lolos fase 'verifikasi' untuk plugin, yang seharusnya memiliki persyaratan khusus di dalamnya dokumentasi (lihat inventaris ansible-doc -t)

Saya tidak melihat apa pun dalam pesan yang mengatakan MENGAPA, hanya APA, dan bahwa hasilnya buruk. ansible-doc -t inventory ini tidak memberi saya petunjuk apa pun tentang apa yang mungkin tidak diverifikasi. Jika fase verifikasi memiliki keluhan, itu harus spesifik tentang itu (baris, kolom, apa yang tidak benar), bukan pesan samar yang tidak berarti apa-apa jika Anda tidak tinggal di kode sumber yang mungkin.

MENGAPA persyaratan tidak terpenuhi, kesalahan penguraian bisa menjadi alasan lain dan itu akan memberikan pengecualian / tracekback tertentu. Setiap plugin memiliki persyaratan dan verifikasinya sendiri, dalam banyak kasus tidak ada hubungannya dengan konten file tetapi sifat file itu sendiri.

Menggunakan -vvv, Anda akan melihat setidaknya salah satu alasan persyaratan tidak terpenuhi:
Skipping due to inventory source not existing or not being readable by the current user

-vvv tidak lebih dari pesan -v. Begitu pula -vvvvvv. Bagi saya seperti bug untuk peringatan untuk masalah yang tidak ada, setidaknya untuk inventaris berbasis ini.

Saya berikan itu sebagai salah satu contoh, ada alasan lain, tidak semuanya menunjukkan info spesifik, itu tergantung pada plugin tertentu. Inventaris ini tidak menyebabkan ini, secara langsung, Anda melihatnya karena 2 plugin lain 'diperiksa' sebelum ini menerima file.

Apa pun yang dilakukan plugin yang menghasilkan checked perlu dilaporkan. Hanya mengatakan sesuatu yang tidak benar tetapi sama sekali tidak memberi petunjuk tentang apa yang salah, itu salah. Bisa jadi pesan "tidak memenuhi persyaratan" muncul tanpa alasan dan harus dihapus, atau berikan alasan nyata yang mengatakan APA, DI MANA, dan MENGAPA.

Ini adalah peningkatan bertahap, bagian kode itu tidak tahu alasannya, hanya saja plugin menolaknya dalam fase verifikasi, itu lebih banyak info daripada yang Anda dapatkan sebelumnya, di mana Anda tidak tahu bahwa itu ditolak pada fase itu

Karena semuanya berjalan untuk diri saya sendiri pada poster asli, itu tidak terlihat seperti peningkatan.

Sangat membingungkan.

Saya juga menemukan pesan ini membingungkan.

Saya setuju bahwa pesan "error" nya tidak membantu, setidaknya harus ada link ke bab tertentu dalam dokumentasi yang berisi persyaratan host_list. Playbook saya berjalan tanpa masalah dan saya tidak tahu mengapa sebenarnya pesan ini muncul dan bagaimana cara memperbaiki masalah tersebut.

Ini adalah peningkatan bertahap, bagian kode itu tidak tahu alasannya, hanya saja plugin menolaknya dalam fase verifikasi, itu lebih banyak info daripada yang Anda dapatkan sebelumnya, di mana Anda tidak tahu bahwa itu ditolak pada fase itu

Jadi mungkin plugin itu sebaiknya memicu pesan (atau tidak) karena mereka memiliki info berguna?

Saya setuju bahwa pesan tersebut membingungkan. Saya tidak tahu apa itu "persyaratan host_list", atau plugin apa yang dibicarakannya.

Setelah membaca dokumen Inventory Plugins , saya menemukan solusinya. Jika Anda mengonfigurasi Ansible hanya dengan plugin inventaris yang Anda gunakan, Anda menghindari peringatan tentang file yang tidak memenuhi persyaratan plugin lain.

[inventory]

# avoid "did not meet _ requirements" warnings when using -v
# see https://github.com/ansible/ansible/issues/48859
enable_plugins = ini

Bagaimana Anda tahu plugin mana yang menghasilkan pesan? Setidaknya itu bisa menjadi petunjuk. Saya mengurangi daftar plugin saya menjadi satu (yaml), dan masih mendapatkan pesan, tetapi inventaris tampaknya diuraikan dengan baik.

pesan selalu memiliki nama plugin, host_list / ini / script / yaml / etc, yang baru sekarang meletakkannya di awal pesan, bukan di tengah.

Tidak, tidak. Ini memiliki file yang dikeluhkan di awal, bukan nama plugin yang mengeluh.

/Users/alan/Source/ansible_home/hosts.ini tidak memenuhi persyaratan host_list, periksa dokumentasi plugin jika ini tidak terduga

Saya tidak melihat apa pun yang tampak seperti nama plugin. Seperti yang disarankan @ leedm777 , membatasi plugin yang mengaktifkan inventaris menjadi hanya ini menghilangkan pesan, bahkan petunjuk nama file tidak benar.

Mengingat bahwa enable_plugins = ini menghentikan pesan tersebut, menurut saya beberapa plugin inventaris lainnya salah mendapatkan file ini sebagai input, dan mengeluh tentangnya, dengan pesan kesalahan yang tidak memadai. Bagaimana ini bukan bug?

@alanbantuit membaca pesan baru dari PR di atas, yaitu pesan yang menempatkan plugin di awal

Seperti dari contoh 'host_list' adalah pluginnya, yang saya setuju tidak jelas, itulah sebabnya saya mengubahnya menjadi di awal.

Jadi apa yang dilakukan bro? Apa itu plugin "host_list" ??

saya tambahkan

[inventory]
enable_plugins = host_list, script, yaml, ini, auto

ke conf saya tetapi pesan yang sama

Tampaknya ini salah satu jenis bug yang tidak terlihat seperti bug bagi pembuatnya, tetapi jelas menyebabkan masalah bagi pengguna biasa. Mungkin kata-katanya harus lebih jelas bahwa itu bukan kesalahan, dan nama plugin harus dalam tanda kutip, seperti pada

INFO somefile.inv does not meet the requirements of the "host_list" plugin

Teksnya telah berubah, https://github.com/ansible/ansible/pull/49080 , juga saya menemukan verbositas yang ditunjukkannya.

Untuk memperjelas ini BUKAN peringatan atau kesalahan, hanya pesan informasi yang muncul saat menggunakan pengaturan verbositas. Tidak ada pesan pada peningkatan verbositas adalah kesalahan, itu selalu ditampilkan, Anda mungkin mendapatkan lebih banyak informasi tentang kesalahan tetapi kesalahan dan peringatan memiliki fasilitas tampilan sendiri.

hmm benar, peringatan berwarna ungu dan kesalahan berwarna merah

Saya masih belum tahu tentang apa pesan itu: D

Menurut saya, jika beberapa kode memancarkan pesan informasi tentang masukan yang tidak lulus ujian, kode lain yang menguji masukan yang sama akan memancarkan pesan informasi tentang masukan tersebut yang lulus uji. Itu akan konsisten dan lebih informatif. Di sini sepertinya input melewati beberapa tes di suatu tempat, tetapi kami tidak tahu di mana.

ketika tes lulus Anda melihat plugin 'memproses' input, pesan ini dimaksudkan untuk memberikan beberapa informasi tentang mengapa plugin tidak mencoba melakukannya

Lucu bahwa masalah ini adalah yang pertama muncul setelah mencari pesan kesalahan yang dinyatakan dalam deskripsi. Karena itulah yang harus saya lakukan untuk menemukan solusi setelah membandingkan daftar inventaris saya dengan contoh dokumentasi yang tidak menemukan keanehan.

Saya menghormati tim Ansible dan saya berterima kasih atas pekerjaan mereka, tetapi ini bukan perubahan yang keren @bcoca ini membingungkan dan tidak perlu karena meninggalkan pertanyaan daripada jawaban.

Jika Ansible memiliki masalah dengan file input saya, saya ingin hard exit, beri tahu saya apa masalahnya sehingga saya dapat memperbaikinya dan melanjutkan tugas.

cara kerja plugin inventaris adalah kita memiliki daftarnya, mengingat sumbernya kita lihat daftar dan melihat apakah sumber itu cocok dengan plugin dan kemudian jika dapat diurai, Anda akan mendapatkan peringatan (beralih untuk membuatnya menjadi kesalahan ) jika tidak ada plugin yang dapat membaca file.

yaitu diberi hosts.ini, pertama-tama kita mencoba 'host_list' (yang mengambil string host sebaris -i "host1, host2," ), lalu skrip (untuk skrip dinamis), lalu yaml dan kemudian ini (jika ini dilewati, lalu 'otomatis' ). Saya menambahkan pesan untuk memperjelas mengapa plugin melewatkan sumbernya, dalam hal ini, bahwa itu tidak melewati fase 'verifikasi', PR di atas membuat pesan ini lebih jelas.

Sekali lagi, ini tidak pernah menjadi kesalahan atau peringatan, itu adalah salah satu dari banyak pesan yang Anda dapatkan saat menjalankan verbose.

Sekarang setelah saya membaca diskusi ini, saya mengerti tentang apa pesan-pesan ini. Tetapi perlu dicatat bahwa saya menghabiskan mungkin 20 menit untuk meneliti dan membaca ini (dan komentar menunjukkan bahwa itu adalah perhatian bagi lebih banyak pengguna.) _Jika setiap pesan dalam keluaran verbose begitu mengkhawatirkan menyebabkan respons semacam ini, tidak ada yang akan mendapatkan segala sesuatu yang berguna dilakukan dengan Ansible dan / atau mode verbose akan dianggap tidak berguna._

Masalah bagi saya adalah bahwa menggunakan "-v" atau "-vv" melaporkan plugin yang TIDAK berfungsi, tetapi TIDAK menunjukkan plugin mana yang berfungsi. Anda harus menggunakan "-vvv" penuh untuk melihat plugin mana yang berfungsi. Mungkin hanya dengan membuat pesan sukses plugin selalu ditampilkan pada tingkat verbose yang sama dengan pesan kegagalan plugin akan menghindari kebingungan ini.

@flatrocks lagi, lihat PR di atas, itu berhasil

Saya harus mengatakan bahwa saya menemukan pesan yang membingungkan juga, inilah alasan mengapa saya akhirnya membaca bug ini.

Ini lebih merupakan pesan level debugging yang masih dicetak pada V = 1 yang tidak ok. Ironisnya adalah bahwa pesan-pesan ini dicetak tetapi Anda tidak tahu plugin mana yang digunakan untuk memuat file host pada akhirnya, jika itu dimuat sama sekali.

Menurut saya bug tersebut asli dan menggarisbawahi beberapa masalah:

  • pesan menyebutkan dengan benar nama plugin, seharusnya sesuatu yang jelas seperti 'FILE tidak memenuhi persyaratan plugin inventaris FOO , dilewati memuatnya.
  • Ini harus menjadi pesan tentang pemuatan file inventaris yang berhasil
  • Melewati pemuatan file inventaris harus ditampilkan hanya jika verbositas yang lebih besar diaktifkan, lile V> = 2 atau lebih.
  • Pesan RTFD yang tidak menyertakan tautan permanen ke dokumen, memberikan pengalaman pengguna yang buruk. Jika sebuah pesan memerintahkan pengguna untuk membaca dokumen, itu harus menyertakan url.

Saya mendapatkan pesan "Tidak dapat mencocokkan pola host yang disediakan, mengabaikan: 'semua'" setelah pesan ini, jadi jelas ada sesuatu yang tidak berfungsi di suatu tempat tetapi tidak ada informasi tentang cara menemukan atau memperbaikinya. Pasti membutuhkan pesan kesalahan yang lebih baik.

Bisakah kita mengetahui jenis persyaratan yang perlu kita sesuaikan agar kita tidak mendapatkan pesan info ini?

Pesan baru dalam perbaikan PR commit adalah:
display.vvv("%s declined parsing %s as it did not pass it's verify_file() method" % (plugin_name, source))

@coca
Bukankah seharusnya itu menjadi " its " daripada " it's "?
https://github.com/ansible/ansible/blob/devel/lib/ansible/inventory/manager.py#L281
Omong-omong, terima kasih atas klarifikasi ini.

Ya, “it's” adalah singkatan dari “it is”, bukan posesif dari “it”. Posesif adalah "miliknya".

Dari: "sremy" [email protected]
Kepada: "ansible / ansible" [email protected]
Cc: "Alan Brenner" [email protected] , "Komentar" [email protected]
Dikirim: Jumat, 4 Januari 2019 07:05:19
Subject: Re: [ansible / ansible] Inventaris tidak memenuhi persyaratan host_list / script (Ansible 2.7.1) (# 48859)

Pesan baru dalam perbaikan PR commit adalah:
display.vvv ("% s menolak penguraian% s karena tidak lulus metode verifikasi_file ()"% (plugin_name, sumber))

[ https://github.com/bcoca | @tokopedia
Bukankah seharusnya itu menjadi "its" daripada "it's"?
[ https://github.com/ansible/ansible/blob/devel/lib/ansible/inventory/manager.py#L281 | https://github.com/ansible/ansible/blob/devel/lib/ansible/inventory/manager.py#L281 ]
Omong-omong, terima kasih atas klarifikasi ini.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, [ https://github.com/ansible/ansible/issues/48859#issuecomment -451426545 | lihat di GitHub], atau [ https://github.com/notifications/unsubscribe-auth/AAigO-Cbc5kdXQNhBL8mpkefzwoemKN9ks5u_0N_gaJpZM4YoJPK | nonaktifkan utas].

Tolong seseorang memberi tahu saya jika setelah membaca semua ini saya akhirnya benar di kepala saya. Ada beberapa plugin berbeda untuk membaca inventaris (saya menggunakan yaml).

Semua hal ini coba katakan kepada saya adalah bahwa ia tidak lolos pemeriksaan inventaris untuk gaya ini, skrip, atau apa pun yang lain?

@sgutermann Ya, ia mencoba memberi tahu Anda bahwa ia tidak lolos pemeriksaan inventaris untuk skrip ini (karena ia menggunakan yaml sebagai gantinya.

Jika di ansible.cfg Anda baru saja menggunakan:

[inventory]
# enable inventory plugins, default: 'host_list', 'script', 'yaml', 'ini'
enable_plugins = yaml

Kemudian "pemberitahuan informasi" itu akan hilang. Saya setuju bahwa tidak jelas kegunaannya, tetapi setelah beberapa kali coba-coba, saya dapat menyingkirkan "pemberitahuan" tersebut. Saya menggunakan format ini untuk semuanya, dan tidak menjalankan "satu kali" ... jadi saya hanya menggunakan ini, dan tada ... tidak ada lagi pesan yang menjengkelkan.

kesalahan apa ini, saya seorang pemula yang ingin mencoba Ansible,

Tapi itu alasan kesalahan, yang saya tidak tahu bagaimana mengatasinya .....

Saya juga terus mendapatkan ini, meski sudah memasang

enable_plugins = ini

dalam file ansible.cfg . Sangat menyebalkan ...

@bcoca , mengklarifikasi pesan seperti yang disarankan @ssbarnea akan sangat membantu. Pesan di PR tidak begitu jelas, dan saran tersebut akan membantu mencegah pengguna dari keinginan untuk melihat ke bawah terpal untuk menemukan mengapa sesuatu "ditolak" karena "belum diverifikasi," daripada "dilewati" untuk inventaris lain plugin. Pesan tersebut juga harus mengidentifikasi plugin sebagai plugin inventaris seperti yang disarankan. Selain itu, terima kasih telah memberikan pesan info sejak awal, dan menyetel verbositas agar sesuai dengan tingkat plugin inventaris yang sebenarnya dimuat. Saya benar-benar belajar sesuatu hari ini setelah bertanya-tanya "apa yang saya lakukan salah?" :)

Dengan 2.7.8 saya mendapatkan pesan ini:

Using /root/ansible/ansible.cfg as config file
/root/ansible/hosts did not meet host_list requirements, check plugin documentation if this is unexpected
/root/ansible/hosts did not meet script requirements, check plugin documentation if this is unexpected

Bagi saya, tidak jelas bahwa host_list dan skrip adalah nama plugin yang sebenarnya.

Saya pikir itu akan lebih jelas seperti:

Using /root/ansible/ansible.cfg as config file
/root/ansible/hosts did not meet requirements for "host_list" plugin, check plugin documentation if this is unexpected
/root/ansible/hosts did not meet requirements for "script" plugin, check plugin documentation if this is unexpected

@Berbagi masalah yang sama !!

[ root @ localhost ~] _ ### ansible-playbook -i / etc / ansible / hosts openshift-ansible / playbooks / openshift-node / bootstrap.retry -vvv_
ansible-playbook 2.7.10
file konfigurasi = /etc/ansible/ansible.cfg
jalur pencarian modul yang dikonfigurasi = [u '/ root / .ansible / plugins / modules', u '/ usr / share / ansible / plugins / modules']
lokasi modul python yang mungkin = /usr/lib/python2.7/site-packages/ansible
lokasi yang dapat dieksekusi = / usr / bin / ansible-playbook
versi python = 2.7.5 (default, 26 Maret 2019, 22:13:06) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Menggunakan /etc/ansible/ansible.cfg sebagai file konfigurasi
/ etc / ansible / hosts tidak memenuhi persyaratan host_list, periksa dokumentasi plugin jika hal ini tidak diharapkan
/ etc / ansible / hosts tidak memenuhi persyaratan skrip, periksa dokumentasi plugin jika tidak terduga
Sumber inventaris yang diurai / etc / ansible / hosts dengan plugin ini
KESALAHAN! playbook harus berupa daftar drama

Kesalahan tampaknya ada di '/root/openshift-ansible/playbooks/openshift-node/bootstrap.retry': baris 1, kolom 1, tetapi mungkin
berada di tempat lain dalam file tergantung pada masalah sintaks yang tepat.

Garis yang menyinggung tampaknya adalah:

master.istic.linsoft.com

KESALAHAN! playbook harus berupa daftar drama

Itu masalah yang berbeda. Anda menyediakan file coba lagi seolah-olah itu adalah pedoman YAML, dan sebenarnya bukan; itu daftar host yang gagal.

Gunakan: ansible-playbook /path/to/bootstrap.yml --limit @/path/to/bootstrap.retry

Karena itu bukan bug, harap menahan diri dari diskusi lebih lanjut di sini - gunakan grup google proyek yang mungkin sebagai gantinya.

Hey! terima kasih atas tanggapan yang cepat
jika tidak, saya masih mendapatkan masalah yang sama
...

Le redup. 21 avr. 2019 pada 08:54, Brian Candler [email protected] a
écrit:

KESALAHAN! playbook harus berupa daftar drama

Itu masalah yang berbeda. Anda memberikan file coba lagi seolah-olah itu adalah
Pedoman YAML, dan tidak; itu daftar host yang gagal.

Gunakan: ansible-playbook /path/to/bootstrap.yml --limit
@ / path / ke / bootstrap.retry

Karena itu bukan bug, harap menahan diri dari diskusi lebih lanjut di sini - gunakan
sebagai gantinya, grup google proyek yang mungkin.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/ansible/ansible/issues/48859#issuecomment-485232650 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/ALWB2BCFZ5OPUOJSKEXNP6TPRQMT7ANCNFSM4GFASPFA
.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat