İnsanlar neden yalnızca CloudInit kullanmak yerine Amazon Cloud Formation ile Puppet / Chef kullanıyor?


84

"Önceden pişirilmemiş" AMI EC2 bulut sunucularını kullanmayı planlıyoruz. Yani yeniden yapılandırıldıklarında, AWS linux'un çıplak yüklemeleridir. Önyükleme sürecimiz, ihtiyacımız olan çeşitli kurulumları, örneğin python, tomcat'i çekecektir. En az 3 ve en fazla 8 örneğimiz olacak.

Bu gereksinimler göz önüne alındığında, Amazon Cloud Formation (CloudInit) kullanmak yerine Puppet / Chef kullanmak yararlı olur mu?

Gördüğüm en iyi şey Puppet kullansaydık, o zaman bir komut dosyasına göre neler olduğunu görmek için denetlemesi daha kolay olan bildirimsel programlamaya sahip olurduk. Ayrıca CloudInit'in karşılaşabileceğimiz veya karşılaşmayabileceğimiz 16k komut dosyası boyutu sınırı vardır.

CloudInit'ten Puppet veya Chef'e, soruma yanıt olarak burada sağlayabilecekleri belirli bir nedenle taşınan var mı?


2
Bazı insanlar (benim gibi) CloudFormation ile basit kullanıcı verisi komut dosyalarını (bulut init tarafından desteklenir) kullanır. Daha uzun komut dosyaları S3'ten indirilebilir ve ilk kullanıcı verisi komut dosyası tarafından çalıştırılabilir.
Eric Hammond

cloud-init agnostiktir ve birden çok bulut sağlayıcısı onu kullanır. AWS, google bulut platformu ve microsoft Azure üzerinde çalışabilir. ( cloud-init.io ) Oysa AWS :: CloudFormation :: Init agnostik değildir. Amazon'a özeldir.
Jordan Stewart

Yanıtlar:


83

CloudInit'e göre bir avantajı var mı? Evet, kesinlikle, çoğu!

Elbette, bir sunucuyu sağlamak için CloudInit komut dosyalarını bir kez çalıştırdıktan sonra yukarıdan aşağıya yazabilirsiniz. Ancak bir yapılandırma dosyasını değiştirmeniz, bir kullanıcı eklemeniz, bir paketi güncellemeniz veya yeni bir paket yüklemeniz gerektiğinde ne olur? Sonunda sunucularda oturum açarsınız veya bunu yapmak için komut dosyaları yazarsınız ve kaçınılmaz olarak sunucuların uyumsuz bir durumu olur.

CloudInit, yapılandırma yönetimi değildir. Konfigürasyon yönetimi yazılımını kullanmaya başlamayı tercih ederseniz, yalnızca bir görev için bulut init kullanın: Kukla / Şef / diğer aracıyı önyüklemek için.

Puppet yalnızca paketleri kurmanıza, ssh anahtarlarını kurmanıza veya Tomcat yığınınızı ayarlamanıza yardımcı olmaz. Şeylerin durumunu sağlar. Bir geliştirici sabah saat 3'te bir Java uygulamasında sorun giderirken Tomcat yapılandırmanızı değiştirdiğinde Puppet onu eski haline getirecektir. Tüm düğüm grupları veya düğüm grupları için Python sürümünü hızla değiştirebilirsiniz ve birisi farklı bir sürüm yüklerse Puppet onu eski haline getirecektir.

Uygulama yığınınız değiştiğinde ve örneğin RabbitMQ veya Jetty veya yeni bir RDBMS kullanmaya başladığınızda, değişiklikleri onlarca veya binlerce sunucuda kolayca test edebilir ve dağıtabilirsiniz.

Arka uç raporlama, denetim ve güvenlik uyumluluğu gibi konfigürasyon yönetimi yazılımını kullanmanın başka birçok nedeni vardır.


14
Değişir. Uzun süre çalışan hizmetler için (genellikle AD, DB'ler), yapılandırma yönetimi gerekebilir. Ancak diğer değiştirilebilir atma sunucuları için, gerçekten değil; ASG altında yönetilen web sunucuları, hadoop veya elasticsearch'teki küme düğümleri. Yapılandırmayı değiştirirsem, sunucuyu çöpe atar ve yenisini başlatırdım.
Sleeper Smith

64

Konfigürasyon yönetiminin tüm amacı, makineleri tahmin edilebilir ve tutarlı bir şekilde döndürmektir. CloudFormation ve cloudinit, yalnızca AWS ile sınırlı olduğunuzda harikadır (CloudFormation şablonlarında hata ayıklamak berbat bir deneyim olsa da ), ancak hem veri merkezi kaynaklarını hem de AWS'yi veya yerel test ortamlarını veya geliştirme makinelerini kullanan uygulamalar ne olacak?

Tamamen AWS'de bulunuyorsanız, sanırım cloudinit'ten başka hiçbir şeyden kurtulabilirsiniz, ancak bunun herhangi bir ölçekteki uygulama için gerçekçi olduğuna ikna olmadım (örneğin, Netflix, yazdıkları OSS teknolojilerini kullanarak AMI'lerini önceden pişiriyor ve dünyaya yayınlandı; ayrıntılar için bu videoyu düşünün ). Yüksek düzeyde kullanılabilir uygulamalar bölgeler arasıdır, genellikle VPC'lere dayanır, VPN'lerdeki veri merkezlerine yedekleme yapma eğilimindedir ve bu, demo, hazırlık, test veya geliştirme ortamlarına bile dokunmaz. Makinelerin temel hazırlığını yapmakla görevli biri olarak yapmak istediğim son şey, işi tekrarlamak veya birden çok provizyon yönteminde hata ayıklarken takılıp kalmak.

Dolayısıyla Şef veya Kukla. Veri merkezim için olduğu kadar AWS için de iyi çalışıyorlar ve zaman zaman ihtiyaç duyduğum demo ortamlarında olduğu gibi Vagrant çalıştıran geliştirme makinem için de çalışıyorlar . Hem cloudinit hem de Chef veya Puppet'ı sürdürmektense, Chef veya Puppet'ı cloudinit'ten başlatmayı tercih ederim.


1
@ U0001: video bağlantısı düzeltildi
Christopher

5

Atma sunucuları için, bir otomatik ölçeklendirme grubunun arkasında çalıştığını varsayalım, cloudinit'in muhtemelen yeterli olduğunu söyleyebilirim. Linux kabuk betikleri veya windows powershell betikleri hile yapmalıdır.

Uzun süredir çalışan bir sunucuysa, belki şef, kukla veya liman işçisini yönetmeyi planlıyorsanız, kabul edilen cevapta belirtildiği gibi size bir avantaj sağlayabilir. Bunları kullandıktan sonra avantajı göremezseniz, muhtemelen araca ihtiyacınız yoktur.


Tamamen katılıyorum. Puppet ve Chef karmaşıktır ve bir sunucuyu basitçe silip yeni bir tane açarak değiştirebilirseniz - o zaman onları kullanmaktan gerçekten vazgeçerim. Kukla / şefin harika olduğu belli senaryolar var, ancak her senaryoda kullanmanın ekstra karmaşıklığını ağırlıklandırmanız gerekiyor.
bobmarksie

0

Tecrübelerime göre, AWS'nin sağladığı kullanıma hazır GUI araçlarıyla kolayca yapılabilen basit şeyler var, ancak daha karmaşık şeylere girdiğinizde, yalnızca yapabileceklerinizin sınırlamaları olduğunu keşfetmeye başlıyorsunuz. araçları.

Bu noktada, ya durdurabilir ya da daha karmaşık hedeflere ulaşmanıza ve daha basit şeyler yapmanıza yardımcı olabilecek başka araçlar (Şef veya Kukla gibi) bulabilirsiniz.

Senin seçimin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.