Strategi terbaik untuk menjaga versi buku masak koki di bawah kendali

10

Saya mencari ide tentang manajemen versi buku masak koki. Saya tahu bahwa Anda menyematkan versi tertentu di lingkungan, tetapi saya tidak yakin bagaimana melakukannya.

Kami menggunakan pustakawan-koki yang memasang buku komunitas pihak ke-3 ke dalam folder buku resep. Kami tidak pernah menyentuh buku-buku itu dan hanya memperbarui ke versi yang lebih baru dari waktu ke waktu.

Kami juga memiliki buku masak khusus situs khusus tempat kami memasukkan buku komunitas ( include_recipe).

Secara teoritis kami dapat menentukan versi spesifik buku komunitas yang bergantung pada buku kustom kami dan kemudian mengatur versi buku masak kami di konfigurasi lingkungan, tetapi masalahnya adalah bahwa buku komunitas tersebut dapat bergantung pada beberapa buku lain tanpa versi yang ditentukan. Dan ketergantungan bersarang yang dalam itu bisa berlangsung terus.

Jadi tidak ada jaminan bahwa ketika Anda mengunggah buku masak ke server koki, itu tidak akan merusak produk, karena buku masak yang tergantung mungkin juga berubah.

Satu-satunya solusi yang dapat saya lihat saat ini adalah menentukan setiap versi buku masak tunggal yang kami gunakan dalam konfigurasi lingkungan, termasuk yang komunitas dan kustom. Tetapi kemudian saya harus membaca setiap buku masak dan mencari tahu versi-versi itu.

Kami juga melakukan pembaruan pustakawan-koki untuk waktu ke waktu dan saya membayangkan mungkin akan sulit untuk melacak versi yang berubah dan tidak lupa untuk memperbarui versi di lingkungan ketika saatnya tiba.

Silakan, bagikan pengalaman dan praktik terbaik Anda. Saya yakin ini akan sangat berguna bagi orang lain.

Gansbrest
sumber

Jawaban:

11

Tidak lama setelah saya mulai menggunakan Chef dengan sungguh-sungguh bahwa saya menghadapi masalah yang sama. Saya baru sadar ketika saya mulai melakukan empat hal secara operasional. Perhatikan bahwa ini mungkin tidak dianggap "praktik terbaik" oleh beberapa orang di komunitas Chef. Meskipun demikian, ini adalah bagaimana saya membawa kewarasan, pengulangan, dan ketertiban ke dunia saya.

  1. Buat resep Anda sendiri. Saya berhenti menggunakan buku resep komunitas dan hanya membuat resep sendiri, sesuai spesifikasi saya. Dengan cara ini saya mengelola dan mengontrol dependensi saya sendiri. Banyak yang akan menentang ini, tetapi jujur ​​- jika saya akan membaca beberapa resep Opscode dan komunitas terlebih dahulu, saya mungkin tidak akan memilih Chef sebagai solusi saya untuk memulai. Saya menjaga resep saya sederhana, dan sejalan dengan cara saya bekerja. Saya memiliki persis nol buku masak komunitas di repositori saya.
  2. Disiplin tentang peningkatan. Jika saya memperbarui resep, saya memastikan itu bekerja di mana-mana dan saya melalui kerumitan tambahan untuk menyebarkannya di mana-mana, bahkan jika itu mengganggu alur kerja saya dan menambah gesekan. Dalam jangka panjang, ini adalah kunci kewarasan Chef. Dalam kasus ekstrem, jika saya memerlukan variasi untuk beberapa host, seperti lingkungan pengujian vs produksi, maka saya kode mereka ke dalam buku masak. Tetapi filosofi saya adalah bahwa versi terbaru dari setiap buku masak harus dapat diterapkan dengan aman di mana pun mereka dibutuhkan.
  3. Gunakan Chef Solo untuk semuanya. Setiap beberapa bulan saya mendapatkan di kepala saya bahwa saya harus mencoba menggunakan Chef Server lagi. Edisi komunitas membaik, tetapi seluruh paradigma sepertinya tidak pernah cocok dengan dunia saya. Dan setiap kali saya mencoba, saya facepalm dan menendang diri sendiri. Paradigma Server Chef cocok untuk dunia dengan server lama yang perlu sering diubah sistem. Saya membuat perubahan sistem sangat jarang sehingga memiliki server saya terus-menerus check in ke server chef untuk pembaruan hanya konyol. Dan saya memiliki alat yang jauh lebih baik untuk memastikan bahwa host saya sehat. Pekerjaan saya adalah di dunia mesin virtual sekali pakai, di mana mereka hanya dapat bertahan satu atau dua perubahan konfigurasi. Saya sekarang menggunakan Chef Solo secara eksklusif, dan mendorong perubahan ke host saya, sementara juga mendorong buku resep yang sama persis ke semua host yang membutuhkannya.
  4. Hindari kompilasi perangkat lunak selama Chef dijalankan. Kasus yang paling ekstrem (yaitu bodoh) bagi saya melibatkan kompilasi ruby-1.9.3 dari sumber setiap kali saya bootstrapped kotak baru. Tetapi membuat paket-paket khusus seringkali menjadi masalah di pantat. Setelah saya menemukan alat fpm yang luar biasa , menjadi sepele untuk mengemas rpms, hutang, dan permata saya sendiri dan membuat hidup saya jauh lebih efisien dan mudah.

Semoga ini bisa membantu seseorang!

- PEMBARUAN -

Hampir tiga tahun kemudian, prinsip-prinsip ini tetap membantu saya. Tapi saya akan menambahkan satu nasihat lagi, dan itu karena alasan yang sama saya lebih suka chef-solo daripada chef.

  1. GUNAKAN BUKAN BUKAN ANSIBLE
platform
sumber
3

Ada 2 masalah:

  1. mengelola versi buku masak di objek lingkungan yang berbeda
  2. mengelola versi resep di node run_list.

Artikel Essentials dari versi buku masakadalah referensi terbaik untuk versi buku masak. Menurut # 1, Anda benar karena itu adalah pekerjaan yang sulit untuk mengelola berbagai versi buku masak untuk melayani set konfigurasi yang berbeda terutama dicampur dengan dependensi buku resep di mana sebagian besar buku resep dari situs buku resep tidak melakukan pekerjaan ini dengan baik. Jadi konfigurasi mungkin rusak. dan jika Anda tidak mengelola versi dengan menguji perilaku runtime komponen apa pun, itu hanya rusak. Jadi, ide buruk untuk mengunggah buku masak tanpa menentukan nomor versi di objek lingkungan Anda. Jadi kelola versi buku resep di objek lingkungan, dan uji dengan cermat saat mempromosikan versi buku masak baru. Saya biasanya mengelola objek lingkungan di SCM dan tidak mengunggah ke server chef melalui pekerjaan otomatis sampai buku masak yang diubah dapat bekerja dengan baik dengan komponen lainnya yang ada.

Menurut # 2, ini adalah topik yang sulit karena di sinilah ketergantungan resep sebenarnya bekerja pada setiap node. Singkatnya, untuk node kritis, Anda sebaiknya mengontrol ketergantungan resep dengan menentukan versi resep dalam daftar run node / role. Saya hampir tidak melakukan ini karena ini merupakan kontrol grit yang baik dan lebih mahal untuk pengujian / promosi. Namun, untuk peran / simpul penting, ini bukan ide yang buruk tetapi menyediakan asuransi untuk perubahan konfigurasi.

shawmzhu
sumber