Bu cevabı "şef-solo'nın avantajları neler" sorusuymuş gibi yönlendireceğim çünkü yaklaşımlar arasındaki farklılıkları ele almanın en iyi yolu budur.
Özet önerim diğerleriyle aynı doğrultuda: düğümleri sık sık ekleyip çıkaracağınız dinamik, sanallaştırılmış bir ortamı yönetmeniz gerekirse, bir şef sunucu kullanın. Gerekirse, bir şef sunucusu da iyi bir CMDB'dir . Düğümlerin çok sık değişmeyeceği ancak rol ve tariflerin değişeceği daha az dinamik bir ortamınız varsa chef-solo kullanın. Ortamınızın büyüklüğü ve karmaşıklığı aşağı yukarı alakasızdır. Her iki yaklaşım da çok iyi ölçeklenir.
Chef-solo'yu konuşlandırırsanız, her düğümdeki şef deposunun tam bir kopyasını korumak için rsync, 'git pull' ya da başka bir idempotent dosya aktarma mekanizması olan bir cronjob kullanın. Cronjob (a) hiç çalışmamasına ve (b) çalışmasına, ancak yerel depoyu senkronize etmeden kolayca yapılandırılabilir olmalıdır. Şef deponuza her düğüm için bir json dosyası içeren bir düğüm / dizin ekleyin. Doğru düğüm bilgisini belirlemek için istediğiniz gibi cronjob, istediğiniz kadar sofistike olabilir (her ne kadar sadece $ (hostname -s) öneririm. Topluluk yemek kitapları indirmek ve iskeletler oluşturmak için bıçak kullanabilmekten başka bir sebep yok.
Bu yaklaşımın "bir sunucuyu yönetmeme gerekliliği" nin yanı sıra birçok avantajı vardır. Kaynak kontrolünüz tüm konfigürasyon değişikliklerinin nihai hakemi olacak, havuz tüm düğümleri ve çalışma listelerini içerecek ve her bir sunucunun tamamen bağımsız olması bazı uygun test senaryolarını kolaylaştırıyor.
Chef-server, bir yemek kitabını güncellemek için "bıçak yükleme" kullandığınız bir delik açar ve bu deliği kendiniz (işlem sonrası kanca gibi) ya da "site yükleme işlemi" yapan bir kişi tarafından sessizce üzerine yazılma riskini kabul etmelisiniz. diz üstü bilgisayarındaki eski yerel depodan eski bir tarif. Tüm değişiklikler doğrudan ana depodan sunuculara eşitleneceğinden, bu durum şef-solo'da gerçekleşmesi daha az olasıdır. Buradaki sorun disiplin ve ortak çalışan sayısıdır. Yalnız bir geliştirici veya çok küçük bir ekibiyseniz, API aracılığıyla yemek kitapları yüklemek çok riskli değildir. Daha büyük bir takımda, iyi kontroller yerine koymazsanız olabilir.
Ek olarak, chef-solo ile tüm düğümlerinizin rollerini, özel niteliklerini ve çalışma listelerini ana şef deponuzda node.json dosyaları olarak saklayabilirsiniz. Chef-server ile, rolleri ve çalışma listeleri API kullanarak anında değiştirilir. Chef-solo ile bu bilgiyi revizyon kontrolünde takip edebilirsiniz. Statik ve dinamik ortamlar arasındaki çatışmanın açıkça görülebildiği yer burasıdır. Düğüm listeniz (ne kadar uzun olursa olsun) sık sık değişmiyorsa, bu verilerin revizyon kontrolünde olması çok yararlıdır. Öte yandan, sık sık yeni düğümler oluşturuyorsanız ve eskilerini yok ederseniz (asla ana bilgisayar adlarını veya fqdn'lerini bir daha asla göremezsiniz), hepsini revizyon kontrolünde tutmak, sadece gereksiz bir güçlüktür ve değişiklik yapmak için bir API'ye sahip olmak çok uygundur. Chef-server, dinamik bulut ortamlarını yönetmeye yönelik ve aynı zamanda bir düğümü tanımlamanın varsayılan yolu olarak fqdn'yi değiştirmenize izin veren "knife bootstrap" üzerindeki ad seçeneği gibi, tüm özelliklere sahiptir. Ancak statik bir ortamda, bu özellikler, özellikle her şeyle revizyon kontrolünde rollerin ve çalışma listelerinin yer almasına kıyasla sınırlı değerdedir.
Son olarak, neredeyse hiç ekstra çalışma yapmadan tarif test ortamları anında kurulabilir. Bir sunucuda çalışan cronjobs'u devre dışı bırakabilir ve doğrudan yerel deposunda değişiklik yapabilirsiniz. Değişiklikleri chef-solo çalıştırarak test edebilirsiniz ve sunucunun üretimde kendini nasıl yapılandıracağını tam olarak göreceksiniz. Her şey test edildikten sonra değişiklikleri kontrol edebilir ve yerel cronjobs'u yeniden etkinleştirebilirsiniz. Yine de tarifleri yazarken, "Arama" API'sini kullanamazsınız, yani dinamik tarifler (örneğin yük dengeleyiciler) yazmak istiyorsanız, bu sınırlamaları aşmak zorunda kalacaksınız; düğümlerin / dizininizin, daha az uygun olması muhtemeldir ve tam CMDB'de mevcut olan verilerin bir kısmından yoksun olacaktır. Bir kez daha, daha dinamik ortamlar veritabanı odaklı yaklaşımı destekleyecektir, Yerel diskteki json dosyalarında daha az dinamik ortamlar yeterli olacaktır. Bir şefin çalıştığı bir sunucu ortamında API çağrılarını merkezi bir veritabanına yapmak zorunda olduğunda, o veritabanı içindeki tüm test ortamlarını yönetmeye bağlı olacaksınız.
Sonuncusu acil durumlarda da kullanılabilir. Üretim sunucularında kritik bir sorunu gideriyorsanız ve bunu bir yapılandırma değişikliği ile çözüyorsanız, değişikliği derhal sunucunun deposunda yapabilirsiniz, ardından master'ı yukarı doğru itebilirsiniz.
Bunlar şef-solo'nun başlıca avantajları. Bir sunucu yönetmek veya barındırılan şef için ödeme yapmak zorunda kalmamak gibi bazıları da var, ancak bunlar nispeten küçük kaygılar.
Özetle: Dinamik ve son derece sanallaştırılmışsanız, chef-server bir çok harika özellik sunar (başka yerlerde ele alınmıştır) ve şef-solo avantajlarının çoğu daha az farkedilir. Bununla birlikte, özellikle daha geleneksel ortamlarda, şef solo için bazı kesin, çoğu kez belirtilmemiş avantajlar vardır. Bulutta konuşlandırılmanın mutlaka dinamik bir ortamınız olduğu anlamına gelmediğini unutmayın. Örneğin, yazılımınızın yeni bir sürümünü yayınlamadan sisteminize daha fazla düğüm ekleyemiyorsanız, muhtemelen dinamik değilsinizdir. Son olarak, üst düzey bir perspektiften bir CMDB, sadece ekip yönetimi arasında muhasebe ve bilgi paylaşımı gibi sistem yönetimi ve yapılandırması ile ilgili teğetsel olarak ilgili herhangi bir şey için faydalı olabilir. Chef-server kullanmak yalnız bu özellik için buna değer olabilir.