Chef-client tidak memperbarui buku masak dari server

9

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-clientpada node, saya bisa melihatnya menghubungi server, mendapatkan daftar jalankan, dll. Namun file resep di /var/cache/chef/cookbooks/apache2adalah 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.

Rory
sumber
Buka antarmuka web chef-server dan periksa, apakah ada perubahan di buku resep.
Draco Ater
1
Pastikan kamu berlari knife cookbook upload <cookbook_name>. Jika itu tidak menyelesaikannya, cobalah menabrak versi dan berjalan knife cookbook list <cookbook_name>untuk memastikan Anda benar-benar mengunggahnya dengan benar. Bergantian, jalankan knife cookbook download(di direktori lain) untuk menarik apa yang dianggap server adalah kode yang tepat.
Tejay Cardon

Jawaban:

6

Ada beberapa hal yang dapat saya pikirkan yang dapat membantu Anda.

  1. 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.

  2. 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 knifeversi, chef-serverversi, chef-clientversi serta log debug knife cookbook upload apache2 -VVakan sangat membantu dalam debugging lebih lanjut.

Mike Fiedler
sumber
1
Terima kasih banyak atas jawaban ini ... itu membuat saya melihat bahwa kami memiliki kendala buku masak di lingkungan produksi kami, bukan di lingkungan kami / produksi. Rb tetapi ditentukan oleh berkshelf! Aku bahkan tidak tahu itu bisa melakukan itu. Bagaimanapun, setelah mengunggah kembali lingkungan production.rb kami, seorang koki baru mengambil buku resep aplikasi terbaru kami.
Colin Curtin
2

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.

zedfauji
sumber
1

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 listtetapi 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.

Michael Grubb
sumber
Pastikan Anda menjalankan unggahan buku resep pisau <cookbook_name>
Net Runner