Saya punya buku masak koki (untuk apache2). Gagal bekerja pada satu node. Jadi saya mencoba untuk men-tweak dan memperbaruinya, tetapi node tampaknya tidak mengunduh versi baru. Saya telah dapat mengunggah semuanya ke server chef dari mesin lokal saya dengan knife upload .
, yang berhasil, dan mencetak bahwa itu mengunggah bit buku masak apache2 yang saya ubah.
Ketika saya secara manual menjalankan (sebagai root) chef-client
pada node, saya bisa melihatnya menghubungi server, mendapatkan daftar jalankan, dll. Namun file resep di /var/cache/chef/cookbooks/apache2
adalah file lama. Dan resepnya gagal (karena tidak ada perubahan yang saya buat).
Bagaimana cara mendapatkan klien chef di node untuk menggunakan versi terbaru dari buku masak apache2? Apakah saya harus memasukkan nomor versi di buku masak (saya belum melakukan ini)?
chef-client -l debug
keluaran:
[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)
Saya baru mengenal koki, jadi saya mungkin telah membuat kesalahan pemula.
knife cookbook upload <cookbook_name>
. Jika itu tidak menyelesaikannya, cobalah menabrak versi dan berjalanknife cookbook list <cookbook_name>
untuk memastikan Anda benar-benar mengunggahnya dengan benar. Bergantian, jalankanknife cookbook download
(di direktori lain) untuk menarik apa yang dianggap server adalah kode yang tepat.Jawaban:
Ada beberapa hal yang dapat saya pikirkan yang dapat membantu Anda.
Verifikasi bahwa versi buku masak yang Anda unggah adalah versi terbaru
Masalah umum dengan versi buku masak adalah bahwa Anda mungkin memodifikasi buku catatan versi 1.0.0 secara lokal dan mengunggah, tetapi Server Chef memiliki buku masak versi 1.0.1 yang sudah diunggah ke sana. Dalam hal itu, Klien Chef biasanya akan mengambil versi terbaru (kecuali jika diberitahukan sebaliknya) dan perubahan Anda tidak akan pernah disinkronkan ke cache lokal.
Anda dapat melihat semua versi buku masak saat ini di Server Chef melalui:
knife cookbook show apache2
Salah satu solusi untuk ini adalah yang Anda sebutkan - tingkatkan nomor versi Anda di luar apa yang ada di Chef Server, yaitu 1.0.2 dan unggah.
Metode lain adalah menghapus buku masak apache2 lainnya dari Chef Server, dan unggah kembali yang Anda inginkan. Ini tidak memerlukan pembaruan nomor versi apa pun, dan hasil akhirnya adalah bahwa Server Server akan memiliki satu buku masak apache2.
Validasi bahwa perubahan Anda memang membuatnya ke Server Chef
Menggunakan
knife cookbook show apache2 <cookbook version> recipes default.rb
Ganti versi, jalur, dan nama file - misalnya jika Anda ingin melihat templat bernama foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb
Perintah ini akan meminta file dari Server Chef dan menampilkan output di terminal Anda. Ini adalah cara sederhana untuk menentukan bahwa perubahan yang Anda buat sedang diunggah melalui
knife cookbook upload
.Di luar ini, jika ini tidak membantu, menambahkan rincian
knife
versi,chef-server
versi,chef-client
versi serta log debugknife cookbook upload apache2 -VV
akan sangat membantu dalam debugging lebih lanjut.sumber
Pertama-tama debug semua versi buku masak di server dan kemudian periksa versi buku masak mana yang sedang diunduh klien. jika sudah lama, cukup periksa apakah server memiliki versi yang diperbarui. jika itu juga ya, Silakan buka UI server koki dan periksa env. Anda mungkin telah menyiapkan lingkungan di mana batasan buku masak ditentukan. Harap perbarui versi di sana dan itu akan mulai berfungsi lagi.
sumber
Penyebab lain dari hal ini adalah bahwa tidak semua dependensi buku masak ada di chef-server. Saya mengalami hal ini sekarang, dan versi baru buku masak saya muncul
knife cookbooks list
tetapi klien saya tidak menggunakan versi baru. Setelah debugging, saya menemukan bahwa Berkshelf, atau pisau telah mengunggah ketergantungan baru untuk buku masak saya. Setelah saya unggah itu, klien mulai menggunakan versi yang lebih baru.sumber