AWS'de Docker / Ansible ile Ansible, Kukla ve Foreman arasında değişmeyen Sunucu modeli?


9

İlginç bir tartışma yaşıyoruz ve iki kampa düşüyoruz. Eksik olabileceğimiz fikir ya da gotchas ile ilgili herhangi bir özel sorunla ilgileniyorum. Gerçekten, bir karar vermemize veya hesap yapmadığımız şeyleri göstermemize yardımcı olabilecek herhangi bir şey. Bu eteklerin "görüş yok" kuralını biraz yakından biliyorum ama umarım hala kabul edilebilir bir soru. Uzunluk için de üzgünüm, oldukça fazla bir nüans var.

1) Bir taraf (benim - önyargısız değilim) değişmez sunucu modelini bulut sistemleri için çok ilginç buluyor. Bu amaçla altyapımızın tüm bileşenlerini Docker'a taşıdık. Özel uygulamalarımız Jenkins aracılığıyla doğrudan yerel bir Docker Kayıt Defterine dağıtılan Docker görüntülerine dönüştürülür. Sonra büyük bir Ansible rolleri seti ve boş bir sunucuya ulaşabilen bir oyun kitabı oluşturduk, Docker'ı yükleyin ve Docker'a tüm kapları gerektiği gibi yüklemesini söyleyin. Birkaç dakika sonra, tüm uygulama ve tüm destekleyici altyapısı bağlanır ve çalışır - kayıt, izleme, veritabanı oluşturma / nüfus, vb. Bitmiş makine, tam bir kopyası olan bağımsız bir KG veya geliştirme ortamıdır uygulama. Bunu genişletmek için planımız, güvenilir bir AMI'den (muhtemelen çok çıplak bir görüntü) yeni AWS sunucuları oluşturmak için yeni Playbook'lar yapmak, yapılandırma yönetimi ve sürümlerini işlemek için üretim uygulamasının sürekli dağıtımlarını yapmak ve genellikle sunucuları bir daha asla düzenlememek olacaktır - sadece onları yeniden yap. Uygulamada çalıştığım şeyi elde etmekten endişe etmiyorum - sadece makul bir modelse.

2) Diğer kamp, ​​konfigürasyon yönetimini işlemek için Kukla, inşaat sürecimizden üretilen tarballs özel uygulamalarımızı dağıtmak için Ansible, sürecin bir bütün olarak tetiklenmesi ve yönetimini ele almak için Foreman ve bir miktar baz yapmak için Katello kullanmak istiyor görüntü yönetimi. Sürümler, gerektiğinde Kukla değiştirme yapılandırmasını ve Ansible'ın bir miktar Foreman koordinasyonu ile güncellenmiş bileşenleri dağıtmasını içerecektir. Sunucular, yenilerine ihtiyaç duyduğumuzda oldukça hızlı bir şekilde inşa edilecekti, ancak amaç, standart sürecin bir parçası olarak onları tek kullanımlık yapmak değildir. Bu, uzun ömürlü olsa da phoenix sunucu modeline daha yakın.

Yani sorum gerçekten buna geliyor: yukarıda açıkladığım araçlarla değişmeyen sunucu modeli aslında göründüğü kadar gerçekçi mi? Evreleme sürecimizin kelimenin tam anlamıyla canlı olarak uygulamaların tüm bir klonunu oluşturabileceği fikrini seviyorum, QA'nın onu çekiçlemesine izin verin, sonra sadece canlı hale getirmek için veritabanı depolama alanını ve bazı DNS ayarlarını çevirin.

Yoksa değişmez sunucu modeli pratikte başarısız mı? Hem AWS hem de bulut ortamlarında iyi bir deneyime sahibiz, bu yüzden bu gerçekten endişe verici değil - daha ileriye güvenilir bir şekilde dağıtılan makul derecede sofistike bir uygulamanın nasıl elde edileceğiyle ilgili bir mesele. Oldukça sık bıraktığımız için bu özellikle önemlidir.

Ansible'ın aslında bizim için EC2 sunucuları oluşturmak dışında gerekli olan çoğu şeyi yapıyoruz ve bu zor değil. Bu modelde neden aslında Kukla / Foreman / Katello'ya ihtiyacınız olduğunu anlamakta zorlanıyorum. Docker, söyleyebileceğim herhangi bir araçta özel dağıtım komut dosyalarından çok daha temiz ve basit. Ansible'ı, onları yerinde yapılandırmak ve yeni yapılandırmayla tekrar oluşturmak zorunda kalmayla ilgili endişelenmeyi bıraktığınızda, Kukla'dan çok daha basit görünüyor. Ben KISS müdürünün hayranıyım - özellikle Murphy Kanununun yaygınlaştığı otomasyonda. Makine ne kadar az olursa IMO o kadar iyidir.

Herhangi bir düşünce / yorum veya yaklaşım önerileri büyük takdir edilecektir!


Önyargılarım seninkiyle aynı. Yıllar olmasa da tüm büyük konfigürasyon yönetim sistemlerini aylarca kullandım, bu gün ve zamanda yeni bir proje için kukla kullanmayı hayal edemiyorum. Şef, yakut tabanlı sistemlere bağlı kalmak istiyorsanız daha olgun bir seçimdir. Ansible, bu günlerde cinsin en iyisi gibi görünüyor, ancak tuz da iyi bir seçim.
civcivler

Kukla ve ansible mı? Kötü zaman geçireceksin.
dmourati

Docker otomatik ölçeklendirme, kendi kendini iyileştirme vb Konteyner alanı artık olgunlaşan demektir ve çok iyi bir seçenek olduğunu Kubernetes kullanılma olasılığını açar uygulama microservice paradigma uyabiliyorsa
Droopy4096

Yanıtlar:


1

Şirketimizde, kuklaları müşterinin eski altyapısına başarıyla uyguladık. Ayrıca özel bir hizmet çalıştırmak için Docker kaplarını kullanıyoruz (aslında eski bir uygulama kaplara sığacak şekilde kesilmiş ve bükülmüştür).
Onlarla çalışmaya ilk baktığımda konteynerlerden memnun değildim (evet ... 30kb uygulaması 200MB ağır görüntü haline geliyor) ama küçük bir felaketten sonra tüm ortamı yeniden oluşturmak zorunda kaldığımda fikrimi değiştirdim. Docker'ın tam olarak bunun için icat edildiğini düşünüyorum: sunucu yapılandırması hakkında endişelenmeden hızlı ve sıklıkla dağıtımlar. Kapları doğru bir şekilde tasarlarsanız, bulut sağlayıcıları, geliştirici dizüstü bilgisayarları ve konumlandırma veri merkezleri arasında kolayca geçiş yapabilirsiniz. Çünkü ihtiyacınız olan tek şey Docker arka plan programı ile bir vanilya Linux kutusu.

  • Senaryo 1) her şeyi tek bir yerde (yani, Docker ile aynı depoda kod VE yapılandırmaya sahip olacağınız için) var, yönetmesi, okuması ve dağıtması kolay.
  • Senaryo 2) 3 farklı (!) Araç için yapılandırma parçalarını bir repo ve diğer uygulama kodunda saklamanız gerekir, bu da işleri daha karmaşık hale getirir

Önceki projemde de Kukla kullanıyordum ve şu ana kadarki deneyimlerim, değişmez sunucunun Docker ile Kukla veya Şef'ten ziyade ulaşılabilir olmasıdır. Yapılandırma Yönetimi araçlarının geliştirme ekibi yerine Bulut Sağlayıcıları için daha yararlı olduğuna inanıyorum.


0

İşte benim 2 euro cent.

Önerdiğiniz 2 seçenek, değişmezliği (bir tür) başarmak için geçerli seçeneklerdir.
Bence daha rahat olduğun birini seçmelisin.
Ancak, yazdıklarınızdan henüz fikir birliği yok gibi görünüyor.
Belki de üçüncü bir seçenek gerekir? ;)

Bununla birlikte, böyle bir değişmezlik bir amaç değil, diğer özellikleri sağlamak için bir araçtır (konfigürasyon kayması, daha iyi stabilite, ...).
Hedeflerimi açıkça belirtmek, doğrulamak için bazı metrikler koymak ve 2 seçeneği kullanarak bazı testler yapmak istiyorum. Daha sonra, işletmenizle en uyumlu olanı seçmek için bazı rakamlarınız olur.

İyi şanslar!

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.