Bagaimana Juju "hidup berdampingan" dengan Chef, mengambil proses otomasi "selangkah lebih maju"?


15

Jelas dari pos ini bahwa Juju duduk di lapisan yang berbeda dari Chef Server. Juju duduk di orkestrasi atau lapisan layanan , sementara Chef lebih banyak duduk di server individu atau lapisan konfigurasi .

Di salah satu halaman utama Juju Canonical , dinyatakan bahwa Juju dirancang untuk "hidup berdampingan" dengan alat-alat seperti Chef dan Wayang, mengambil proses "selangkah lebih maju". Saya telah menjelajahi internet selama beberapa minggu terakhir tentang hal ini dan tidak dapat menemukan penjelasan yang baik tentang bagaimana , bagaimanapun , alat seperti Chef akan hidup berdampingan dengan Juju.

Jadi, untuk menguraikan pertanyaan menyeluruh dalam judul: (minat khusus pada Juju bekerja bersama dengan Server Chef)

  • Apa contoh mantra "ditulis dalam Chef"? Apakah itu hanya mantra yang ditulis dalam bash yang kemudian memanggil chef-soloperintah? Jika demikian, bisakah mantra memanggil chef-clientperintah untuk bekerja bersama dengan Server Chef?
  • Di mana tumpang tindih antara Juju dan Chef? Misalnya, pesona apache2 memiliki config-changedkaitannya di mana ia membuat perubahan konfigurasi yang, di dunia Chef, akan terjadi dalam resep dengan menerapkan file templat. Jika mantra Juju akan bekerja bersama dengan buku masak Chef tentang penerapan layanan apache2 (cluster) hampir akan tampak bahwa pesona "apache2-chef" harus ditulis sehingga Anda dapat memisahkan tugas-tugas. Dalam hal ini, pesona apache2 di Charm Store akan kurang membantu.
  • Jika Anda memiliki peran Chef yang diterapkan pada node (unit layanan) yang digunakan / dikelola oleh Juju dan sysadmin Anda memutuskan untuk mengubah aturan firewall untuk peran server tertentu dan apakah ini dalam peran Chef, apakah Juju akan pernah menimpa perubahan itu?
  • Lebih sederhana, dapatkah Juju menjadi pembungkus Server Chef, seperti Ironfan ?

Saya melihat Chef Server sebagai caranya sedangkan Juju dapat melakukan caranya , tetapi juga membawa apa yang ada di meja. Artinya, kondisi layanan dan mesin saat ini dapat ditanyakan dan ditindaklanjuti. Anda tidak dapat melakukan ini di Server Chef. Tujuan saya adalah untuk membawa kesadaran Juju dan kemampuan mengatur layanan ke dalam infrastruktur yang dikelola Server Chef.

Tampaknya hampir seluruh rangkaian pesona harus ditulis di mana semua tugas yang dikelola Chef / info konfigurasi ditinggalkan.

Saya akan senang mendengar penimbangan dari seseorang di Canonical (seperti Jorge Castro) dan dari Opscode (seperti A. Jacob atau J. Timberman).

Jawaban:


13

pertanyaan yang luar biasa!

tl; dr

Saya ingin memecah pertanyaan Anda beberapa komentar ... pertama, di sini ada beberapa pendekatan umum untuk mengintegrasikan koki dan juju:

  • kait pengait dapat menggunakan resep koki yang ada yang menjalankan gaya solo pada unit layanan (disarankan)

  • unit layanan juju mendaftar dengan server chef yang ada menggunakan layanan bawahan chef-node

Ide-ide ini belum diimplementasikan / diuji untuk koki, tetapi ekuivalen boneka ada.

... um .. jawaban yang tidak terlalu pendek

Berikut ini sedikit lebih banyak dari dua pendekatan untuk mengintegrasikan chef dan juju:

Juju sebagai top-dog

Di sini juju menjalankan pertunjukan. Nilai terbesar yang disediakan juju adalah koordinasi acara selama manajemen konfigurasi terdistribusi ... maka moniker "layanan orkestrasi". Pesona Juju terdiri dari kait yang disebut oleh juju pada "waktu yang tepat" ketika mengoordinasikan manajemen layanan. Implementasi kait ini cukup terbuka. Itu adalah skrip shell, kode sumber, manifes wayang, atau ... resep koki.

Juju memecah bit dari setiap layanan konfigurasi menjadi:

  • "instalasi" .. bit yang khusus untuk menginstal layanan tertentu ke sebuah node

  • "relation" .. bit konfigurasi yang diperlukan untuk menghubungkan layanan itu ke layanan lain

Kunci untuk menggunakan resep koki sebagai implementasi kail adalah persis ini ... Anda harus memastikan bahwa resep yang Anda gunakan menghormati pemisahan kekhawatiran ini. Kalau tidak, tidak ada yang mencegah menggunakan buku masak di luar rak. Anda dapat memanfaatkan resep yang ada yang telah Anda habiskan waktu / uang untuk mengembangkan .... Anda hanya perlu memastikan bahwa Anda dapat memanggil hal-hal yang berhubungan dengan hubungan secara terpisah dari hal-hal yang berhubungan dengan instalasi.

Kita perlu beberapa contoh ini, tapi saya pikir itu akan menjadi populer b / c chef memiliki dsl yang hebat, alat templating yang hebat, dan jauh lebih menyenangkan untuk digunakan daripada bash saat menulis konfigurasi kompleks. Untuk konfigurasi sederhana, resep chef sedikit berlebihan, jadi metode integrasi ini adalah yang terbaik dari kedua dunia ... dan memiliki kaki yang serius ke depan.

Koki sebagai top-dog

Idenya di sini adalah untuk mengintegrasikan layanan juju ke dalam infrastruktur yang dikelola chef-server yang ada. Untuk melakukan ini, Anda harus menulis pesona bawahan chef-node. Layanan bawahan ini akan dilampirkan ke layanan juju primer dan akan secara efektif mendaftarkan layanan ini sebagai node (dalam peran tertentu) dengan server chef. Subs dapat dilampirkan selama startup layanan juju, atau kapan saja nanti sepanjang siklus hidup masing-masing layanan.

Saya pikir ini akan sangat mirip dengan sub wayang-simpul. Semua kunci, peran, dll yang diperlukan akan ditentukan melalui konfigurasi ke pesona bawahan chef-node. Saya akan mulai dari sana. Pendekatan yang lebih canggih adalah untuk sub-node chef untuk menginterogasi baik layanan utama yang dilampirkan dan server-chefnya untuk secara dinamis menentukan peran, tetapi itu akan sedikit lebih sulit daripada hanya menentukan mereka dalam konfigurasi untuk sub.

Pendapat

Saya pasti akan merekomendasikan metode 1 di atas, jika memungkinkan. Memiliki lapisan koordinasi di atas alat konfigurasi mungkin akan bekerja dengan baik dalam jangka panjang. Tidak perlu dikatakan, infrastruktur dunia nyata mungkin merupakan kombinasi atau variasi dari kedua pendekatan untuk periode waktu ... terutama selama migrasi. Koeksistensi yang direncanakan menggunakan metode 2 mungkin hanya akan bekerja jika komponen yang dikelola oleh kedua alat agak ortogonal satu sama lain. Tidak yakin persis seperti apa itu. Mungkin juju dan koki mengelola layanan terpisah yang relatif terpisah? Saya menduga itu mungkin bekerja dengan baik untuk membiarkan juju mengelola layanan primer dan meminta koki mengelola lebih banyak aspek infrastruktur. Tidak tahu Itu sedikit diskusi yang lebih panjang :)

Catatan tambahan ... Anda juga dapat menggunakan juju untuk mengelola chef-server itu sendiri ... bahkan instalasi chef-server multi-tier yang kompleks. Saya belum melihat pesona chef-server akhir-akhir ini, tetapi jika saat ini tidak menangani tiering dan pemisahan layanan, maka itu pasti bisa dilakukan.

Saya ingin melihat lebih banyak contoh dari kedua jenis integrasi koki yang disebutkan di atas ... itu sudah ada dalam daftar keinginan / todo saya untuk sementara waktu, tetapi belum muncul cukup tinggi dalam prioritas untuk diselesaikan ... tolong bantu jika kamu tertarik!

ok, itu potongan yang baik dari bertele-tele :)) ... mari kita mulai dari sana, maka kita bisa masuk ke lebih detail di blok komentar selanjutnya.


barang bagus di sini. "Saya menduga itu mungkin bekerja dengan baik untuk membiarkan juju mengelola layanan primer dan meminta koki mengelola lebih banyak aspek infrastruktur." Inilah yang saya benar-benar tertarik, karena kami memiliki kecurigaan yang sama. Seperti yang Anda katakan, DSL Chef dan template sangat bagus untuk konfigurasi. Namun, ada beberapa aspek lain dari Chef Server (tas data) yang sulit dilepaskan, dalam metode pertama Anda. Juju, yang berada di tingkat layanan, harus menjadi yang terbaik, tetapi saya merasa itu harus memungkinkan Chef untuk melakukan yang terbaik dalam model Server Chef. Harus bekerja untuk para devs dan admin. Tapi mungkin tidak perlu untuk Server Chef.
Ian D. Rossi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.