Vagrant, Docker, Chef ve OpenStack (veya benzeri ürünler) arasındaki ilişki?


56

Bir web geliştiricisiyim, ancak birkaç idari işle de ilgileniyorum. Bu nedenle, saf yönetimden dev-oplara yeni bir geçiş benim için kullanışlı.

Her neyse, bir şeyi bir ilişki içine sokmak için bazı problemlerim var. Belki de yok, bu yüzden açıklığa kavuşturmak için yardım istemek istedim.

Temel olarak, ilişkiye sokmak istediğim şey dört çeşit yazılımdır (benim anladığım kadarıyla). Kesin ürünler önemli değil, alternatif olarak herhangi bir benzer yazılımı yerleştirebilirsiniz:

  • Vagrant: Anladığım kadarıyla VM'lerin oluşturulmasını ve yönetimini otomatikleştirmek: Onları kurmak, başlatmak ve durdurmak. Bu, örneğin bir bulut platformunda yerel bir VM veya uzaktan kumanda kullanılarak yapılabilir.
  • Docker: Bir Linux çekirdeği konseptine dayanan, örneğin paylaşılan bir web barındırma ortamında, yalıtımlı süreçleri çalıştırmak için kullanılabilecek bir "hafif VM".
  • Chef: Bir işletim sistemini kurmak ve yapılandırmak için bir araç, örneğin bir VM içinde.
  • OpenStack: Kendi özel bulutunuzu yaratmanıza izin veren, dolayısıyla AWS gibi bir şeyle karşılaştırılabilir bir araç.

Soru # 1: Açıklamalarım doğru mu, yoksa bu tüketimlerin bazılarında (veya hepsinde) yanlış mıyım?

Soru # 2: Tüm bu araçları nasıl karıştırabilirim? Bu bir anlam ifade eder mi?

Hayal gücüme ve anlayış açısından, gidebilirsin ve

  • kendi bulutunuzu oluşturmak için OpenStack kullanın,
  • Bulutta çalışan VM'leri yönetmek için Vagrant'ı kullanmak,
  • Bu VM'leri ayarlamak için Chef'i kullanın
  • ve son olarak, VM'lerin içindeki işlemleri çalıştırmak için Docker'ı kullanın.

Bu doğru mu? Ve eğer öyleyse, tüm bunları kullanmaya nasıl başlayacağınız konusunda bana bir tavsiyede bulunabilir misiniz (aynı anda oldukça fazla ve henüz nereden başlayacağımı bilmiyorum)?


1
Bunu tamamen cevaplayacak kadar yetenekli değilsin ama Vagrant ve Chef hakkındaki değerlendirmen doğru görünüyor. Geliştirme kutumda, Vagrant'ı kullanarak VM'leri döndürürüm ve daha sonra Chef'i hazırlarım ve gerçekten iyi çalışır.
GSP

Yanıtlar:


54

Tüm bu projelerin neyle ilgili olduğunu bulmak için kendi web sayfalarını kullanalım. Yine de, listelediğiniz sırayı değiştireceğim:

  • Aşçı : Aşçı, altyapıyı koda dönüştüren bir otomasyon platformudur.

    Bu bir konfigürasyon yönetimi yazılımıdır . Çoğu aynı paradigmayı kullanıyorlar: konfigürasyon dosyaları, kurulu yazılımlar, kullanıcılar, gruplar ve diğer birçok kaynak türü açısından makinenin olmasını istediğiniz durumu tanımlamanıza izin veriyorlar . Bunların çoğu, aynı zamanda, genellikle orkestrasyon adı verilen bir işlem olan belirli makinelere değişiklikleri itme işlevi de sağlar .

  • Vagrant : Hafif, yeniden üretilebilir ve taşınabilir geliştirme ortamları oluşturun ve yapılandırın.

    Tedarikçiler olarak Oracle'ın VirtualBox veya VMWare teknolojisini kullanarak tamamen sanallaştırılmış makineler üretmek için tekrarlanabilir bir yol sunar . Vagrant, işletim sisteminin yükleyicisinin bittiği yerde yükleme işlemine devam etmek için bir yapılandırma yönetimi yazılımıyla koordine edebilir. Bu provizyon olarak bilinir .

  • Docker : Herhangi bir uygulamayı hafif bir konteyner olarak paketlemek, göndermek ve çalıştırmak için açık kaynaklı bir proje

    Bu yazılımın işlevselliği, işletim sistemi kurulumlarını tanımlamak için araçlar sağladığı, ancak bu amaç için kullanılan teknolojiden büyük ölçüde farklı olan Vagrant'ınki ile bir miktar örtüşüyor. Docker, kendi başına sanal makineler değil, yalıtılmış dosya sistemlerinde çalışan yalıtılmış işlemlerden oluşan Linux kapsayıcılarını kullanır . Docker , kapları sağlamak için bir yapılandırma yönetimi sistemi de kullanabilir .

  • OpenStack : Özel ve genel bulutlar oluşturmak için açık kaynaklı yazılım.

    OpenStack'in tek bir makinede konuşlandırılabileceği doğru olsa da , bu tür bir dağıtım yalnızca kaynak kodlar nedeniyle muhtemelen işlevsel değil ispatları içindir.

    OpenStack kurulumları için birincil hedef, farklı bileşenlerin daha iyi sonuçlar elde etmek için özel donanımda kullanılabileceği çıplak metal çok düğümlü ortamlardır .

    OpenStack'ın temel bir işlevi, tamamen sanallaştırılmış (VirtualBox, VMWare), paravirtualized (KVM / Qemu) ve ayrıca kapsayıcılara (LXC) ve hatta Kullanıcı Modu Linux'a (UML) kadar birçok sanallaştırma teknolojisini desteklemesidir .

Bu ürünleri belirli bir mimarinin bileşenleri olarak sunmaya çalıştım. Benim bakış açıma göre, öncelikle ihtiyaçlarınızı ihtiyaç duyduğunuz çevre (Şef, Kukla, Ansible, ...) ile ilgili olarak tanımlayabilmeniz, ardından kontrollü bir şekilde konuşlayabilmeniz (Vagrant, Docker) mantıklı geliyor. , ...) ve nihayet gerekirse küresel boyutta ölçeklendirin.

İhtiyacınız olan tüm bu işlevselliklerin ne kadarı projeniz kapsamında tanımlanmalıdır.

Ayrıca, çoğunlukla tüm teknik açıklamaları aşırı basitleştirdiğime dikkat edin. Lütfen ayrıntılı bilgi için referans verilen bağlantıları kullanın.


Hangi şef ve Kukla aynı aracı? Yani onlar eşdeğer mi? Bunu bir Windows 10 ana bilgisayarında çalıştırmak istiyorsanız, hangi araçları kullanırdınız?
ReynierPM,

Kukla şefe benzer bir araçtır. Windows'ta daha iyi olup olmadığından emin değil ..
Adeerlike

3

Bir geliştirici arka planından gelmek, aslında bir "ahmak" haline geleceğini daha zor hale getireceğini düşünüyorum, sorunuz neredeyse 3 yaşında, bu nedenle yolculuğu nasıl bulduğunuzu duymak ilginç olacak, bakış açısıyla bir cevap vereceğim. yukarıda bahsettiğiniz uygulamalar hakkında sys admin ve umarım biraz ışık tutacaktır veya bir kişinin (admin veya dev) tam olarak ne istediğinizi düşünerek başlayacağını açıklamak için bir yol gösterecek olan teknik bir bakış açısı verecektir. perspektif x, y, z arasındaki ilişki nedir? Bu araçlar parçalarının toplamından daha mı büyük?

Aslında sys yöneticilerinin burada üstünlükleri olduğunu düşünüyorum, sorunuzda bahsettiğiniz uygulamaların çoğu yönetici 'problemlerini' çözüyor ve bunu yaparken daha soyut bir veri merkezi ortamı sağlıyor ve bu da geliştiriciler ve yeniler için daha programlanabilir. devops 'stratejisi (okuma strateji / takım, devops bir insan değildir). Peki bahsettiğiniz uygulamalarla ilişki nedir? Bu BT servisine bütünsel bir yaklaşım nasıl sağlar?

OpenStack: Kendi özel bulutunuzu yaratmanıza izin veren, dolayısıyla AWS gibi bir şeyle karşılaştırılabilir bir araç

İşte bu, ama ne işe yarıyor? - en uygun olarak adlandırılan işletim sistemi DOS'du - BIOS'u çıkartarak diskinizi çalıştırdı, OpenStack veri merkezinizi çalıştırıyor ve altyapınızı soyutlıyor (IaaS - veri merkezi işletim sistemi için Jargon'dur). Şimdi veri merkezi bir API, bir komut sözdizimi ve bir GUI, openstack hiper yöneticiler, switch, router, güvenlik duvarları, depolama alanı ağları, yük dengeleyici, liman işçisi ana vb sürebilirsin vardır .. openstack donanım 'eklentisi' üretmektedir kullanan veya belirli bir işlevi yazılım tanımlanan yazılımda sadece var olabilir şeyveya ağ işlevi sanallaştırma. Bunun yanı sıra OpenStack ve diğer tüm bulutlar, orkestrasyon motoruna attığınız komutları okuyarak veya kurallara göre tetiklenerek (ölçek büyütme, ölçek küçültme vb.) Kendi altyapılarını düzenleyebilir. Yani openstack dev bir soyutlama katmanıdır, örneğin ne anahtarım olduğunu umursamıyorum, bu komutla bana bir ağ ver ya da karmaşık bir yük dengeli, HA, halka açık, otomatik ölçeklendirme, kayıtlı alan adı, depolama ekli şey - internette bulduğum bu komut ile.

Docker: Bir Linux çekirdeği konseptine dayanan, örneğin paylaşılan bir web barındırma ortamında, yalıtımlı süreçleri çalıştırmak için kullanılabilecek bir "hafif VM".

Docker başka bir soyutlama katmanıdır ve bulut gibi yıkıcı bir teknolojidir, endüstriyi değiştirmektedir, çünkü yazılım bağımlılıkları, yükseltmeler, veri yalıtımı ve saf taşınabilirlik gibi birçok operasyonel 'problemi' çözmektedir. Java, geliştiricilerin düşünmek zorunda olmadıkları kaynak kod taşınabilirliği nedeniyle popüler oldu, çalışan bir JVM, java destekli olduğu sürece kodlarının kahve makinesinde çalışması gerektiği anlamına geliyordu. Docker benzer bir sorunu çözer, benim Uygulamasını çalıştırmak için size bir liman işçisi host gerekir değil, python'un bu sürümüne, bu çekirdeğe, bu linux dağıtımına vb. ihtiyaç duyduğunuzda, uygulama hala elbette bu bağımlılıklara sahiptir, ancak altta yatan ana bilgisayar umursamıyor ve yönetici izole edilmiş bir kap içinde ne yaptığınızı umursamıyor ( Bir noktaya). Docker, hem geliştirme hem de işlem paradigmasını değiştiriyor, işletim sisteminin tamamını ve bir ikili gibi hizmetlerini ele alıyor. Onları bir havuzdan alabilir , sürümlerini değiştirebilir, değiştirebilir, parametrelerle çalıştırabiliriz.

Chef: Bir işletim sistemini kurmak ve yapılandırmak için bir araç, örneğin bir VM içinde.

Evet ve ilk ikisi kadar rahatsız edici değil, Şef, kukla, sorumlu, tuz, sistem merkezi operasyon yöneticisi ve bu alandaki diğer uygulamaların büyük bir bolluğu, geliştiricilerin ve yöneticilerin dağıtımları, yükseltmeleri ve diğer eylemleri modellemesini sağlar (config değişiklikler), bulut için olduğu gibi bu çabalara bakmak konusunda herhangi bir standart yapısı bulunmuyor . Ancak Altyapı kadar kesin bir şeyle uğraşmıyoruz, bu yüzden bunları öğrenmek daha acı verici ve birinden diğerine aktarılamayacak bir şey değil.

Vagrant: Anladığım kadarıyla VM'lerin oluşturulmasını ve yönetimini otomatikleştirmek: Onları kurmak, başlatmak ve durdurmak. Bu, örneğin bir bulut platformunda yerel bir VM veya uzaktan kumanda kullanılarak yapılabilir.

Bu, bahsettiğiniz uygulamalar listesindeki garip olanıdır, Vagrant, geliştiriciler için bir araç ve yöneticiler için bir oyuncaktır, hızlı bir şekilde serseriyle bir geliştirme ortamına dayanabilir, örneğin bir android uygulaması geliştirmek, IDE'yi almak istiyorum. serseri, yakında Docker tarafından ele geçirileceğini düşünüyorum.

Tüm bunları kullanmaya nasıl başlayacağınız konusunda bana bir tavsiyede bulunabilir misiniz (aynı anda oldukça fazla ve henüz nereden başlayacağımı bilmiyorum)?

Bu yüzden yöneticilerin üstünlükleri olduğunu düşünüyorum, bunun çoğunu elle yapmak zorunda kaldık ve neyin yanlış gidebileceğini biliyoruz, kukla tezahürleri, bulut bilişim ve liman işçisi orkestrasyonu bizim için daha kolay olacak, geliştiriciler kendilerini pek çok teğet alarak bulacaklar. Herhangi bir potansiyel sapkın için tavsiye ilk önce yönetici olmaktır.


0

Vagrant örneğinin içindeki bir Chef sunucusunu kullanan bir OpenStack dağıtım projesini yeni bitirdim: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Bu şekilde yapmanın temel sorunu, düğümleri her yönetmek istediğinizde Vagrant örneğinin aynı IP'yi almasıdır. Statik adresleme yaparsanız, iyi çalışıyor. Bir VPN üzerinden yapmak idealden daha az.


0

Sonunda, sadece Vagrant ve Docker kombinasyonunu kullanıyorum.

Ben orada (hükmüne makineleri serseri kullanmak ek bulut sağlayıcıları , ama dış ağ bu yaklaşımı kullanıyorum ve depolama hemen hemen manuel Çünkü ben. VirtualBox'ta inşa kullanıyorum ama böyle bir şey kullanırsanız serseri-aws eklentisi yapabilirsiniz AWS'ye sizin için gerekli parçaları tedarik etmesini söyleyin.

Kullandığım sağlama betiği, CA sertifikasını ve docker swarm joinbelirteçlerle birlikte CSR'leri imzalamak için kullanılan anahtarları içeren güvenli bir konuma işaret eder . Ek olarak, docker motorunu yüklüyorum ve sürüye katılacak şekilde yapılandırıyorum (eğer yoksa başlangıç ​​durumuna getirme).

Bu bir kez çözüldüğünde, sadece docker stack deployihtiyacım olan her şeyi dağıtmak için yerel makinemden veya derleme kutumdan yapıyorum.

Benim durumumda şefi sadece temel hazırlık komut dosyaları olarak yumveya apt-getüzerine yükleyen basit yükleme sonrası komut dosyalarını kullanmaktan yana bıraktım.

Ayrıca yok etmeden önce ek komut dosyası eklemek için serseri-tetikleyiciler eklentisini kullanıyorum (benim durumumda sürüyü bırakmak için).

Vagrant ile merkezileşmenin güzel tarafı, ortamı yalnızca providerbölümü eklemek veya değiştirmek zorunda kalmak için başka bir sistemde veya tek bir bilgisayarda çoğaltabilmenizdir . VirtualBox'ı yönetmek için tek bir bilgisayarda OpenStack'i kurmayı başaramadığımı unutmayın.

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.