Soru Şef / Kukla'ı kabuk betikleri üzerinde neden kullanmalısınız?


Kukla ve Şef araçlarına yeni. Yaptıkları iş, kabuk betiği ile yapılabiliyor gibi görünüyor. Belki de bunlar ortaya çıkana kadar kabuk yazılarında yapıldı.

Daha okunabilir olduklarına katılıyorum. Ancak, sadece okunabilir olmanın yanı sıra kabuk betikleri üzerinde başka avantajlar var mı?


78
2018-05-01 10:13


Menşei




Cevaplar:


Alana özgü bir dil, yazdığınız kod miktarında büyük bir fark yaratır. Örneğin, arasında çok fazla fark olmadığını iddia edebilirsiniz:

chmod 640 /my/file

ve

file { "/my/file":
    mode => 640,
}

ama bunlar arasında büyük fark var:

FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
     # where the URL contains "Hello world"

ve

file { "/my/file":
    mode => 640,
    owner => foo,
    group => bar,
    content => "Hello world",
}

Wget başarısız olursa ne olur? Senaryonun bunu nasıl halledeceksin? Ve eğer komut dosyanızda $ FILE'ın doğru içerikle birlikte olmasını gerektiren bir şey varsa ne olur?

Birinin koyabileceğini iddia edebilirsin echo "Hello world" > $FILE komut dosyasında, ilk örnekte betiğin istemci üzerinde çalıştırılması gerekirken, kukla tüm bunları sunucuda derler. Yani içeriği değiştirirseniz, sadece sunucuda değiştirmeniz gerekir ve bunu koymak istediğiniz kadar sistem için değiştirir. Ve kukla bağımlılıkları ele alır ve sizin için otomatik olarak sorunları aktarır.

Sadece karşılaştırma yok - uygun yapılandırma yönetimi araçları size zaman ve karmaşıklık kazandırır. Ne kadar çok yapmaya çalışırsanız, daha fazla kabuk betiği yetersiz görünür ve kukla ile yaparak daha fazla çaba sarfedersiniz.


55
2018-05-01 11:14



@Paul Gear, konfigürasyon yönetim araçlarının uzun vadede ilerlemenin yolu olduğunu söylemek için bir aşırı basitleştirmedir. Örneğin, AWS'yi kullanarak bir kabuk betiği sunucuyu sıfırdan oluşturabilir, bazı testler yapabilir ve AWS girişlerinin tamamlandığından emin olduktan sonra bir görüntü çizebilirsiniz. Daha sonra, görüntüyü hedefleriniz için iyi hale getirdikten sonra, bu görüntüyü daha fazla test için bir önizleme veya aşamalandırma ortamına dağıtabilirsiniz, ardından üretime zorlarsınız. Yapılandırma yönetimi araçları, bu senaryoda hiç yardımcı olmaz. - Derek Litz
Şimdi, insanların günlük olarak kullandıkları 100'den fazla sunucuyu yönetmek istiyorsanız (ve yanlışlıkla, ne yaptıklarını kontrol edersiniz), yapılandırma yönetim araçlarının kullanılması gerekir. - Derek Litz
Bu çok ikna edici bir örnek değil. Wget ile başlayabilirdim ve sonra garip bir durumda olmazdım. Dosya, herhangi bir adım başarılı olmazsa geri alınacak bir işlem gibi mi? - PSkocik


Bu popüler olmayan bir fikir olacaktır, ancak yapılandırma yönetim sistemleri mutlaka daha iyi değildir. Bazen basit gerçekten en iyisidir.

Seçtiğiniz yapılandırma sistemi ile ilişkili kesin bir öğrenme eğrisi ve yönetimsel yük vardır. Her şeyden önce bir bağımlılık getiriyorsunuz. Herhangi bir otomasyonda olduğu gibi, dağıtılmış yapılandırmalarda güvenliğin korunmasına da dikkat etmelisiniz.

Sadece yapılandırma yönetimini dağıttığımız ve sıkıştığımız birkaç örnek var. Her zaman tekrar eden konfigürasyona sahip çok sayıda sistem olduğu ve yapılandırılabilir çerez kesici dağıtımlarının gerçekleştirilmesi gerektiğiydi.


32
2018-05-01 14:58



Çevreyi yönetmenin maliyeti o kadar mükemmel ki otomasyonun yönetilmesi gerçekten daha ucuz. Git'te yönetilen değişiklikleri kodlamak veya bir ssh çoğullayıcıda bir şeyleri ayarlamak daha basitse, bunu yaparız. Benim için en önemli olan, sistemleri izleyip her şeyin beklendiği gibi çalıştığını doğrulamak. Bir şey yanlış yapılandırıldığında uyarıldığım sürece, nasıl yapılandırılacağı çok önemli değil. - kenchilada
@ewwhite "Ne zaman otomatikleştirmeye karar verirsin" xkcd.com/1205 - MikeyB
Ansible gibi daha modern araçların, Şef veya Kukla'dan çok daha az dağıtım / yönetim yükü vardır, bu da az bağımlılık gerektirmez (özellikle Ajan olmayan). Bu gerçekten benimsenmesi için çubuğu indirir. - GomoX
@ewwhite Kişisel üretkenlik için istediğiniz zaman otomatikleştirin. Otomatikleştirerek öğreniyorsunuz, sıradan görevleri yaparak öğrenmiyorsunuz. Öğrenme = verimlilik artışı ve yinelemeli iyileştirme. Otomasyon, daha fazla pozitif üretmek için bununla birleştirir. Olumsuz olan yerine pozitif bir kartopu. Teknik İlerleme ve Teknik Borç. - Derek Litz
@ A-B-B Hayır, bu ima edilmez. Kabuk betiklerinden bahsetmiyorum bile, genel bir uygulama olarak otomasyondan bahsediyorum. Kabuk betikleri ile işleri otomatikleştirebilir ve el ile bir şeyler yapmak yerine komut dosyası soyutlamasını öğrenebilir ve bu sadece tekrar tekrar bu görevi yapmanın zamanını değil, hataları önler. Ayrıca, bir sonraki senaryonuzu sonuncusundan biraz daha iyi yazabilmelisiniz. Pozitif bir kar topu ... Bununla birlikte, eğer sen, bir senaryo yazarken uzmansanız ve bir daha asla koşmayacağınız bir şeye komut yazmıyorsanız, size herhangi bir şekilde zaman kazandırmanıza veya kazanmanıza yardımcı olmaz. - Derek Litz


Kendi sorumu cevapladın ...

Otomasyon daha ölçeklenebilir ve resmileştiriliyor. Kukla ve Şef bu günlerde standart olarak kabul edilir. iş ilanları).

Cobbled-birlikte kabuk betikleri yer var, ama onlar değil DevOps hareketi bağlamında ölçeklenebilir. Okunabilirlik bunun bir parçası.


23
2018-05-01 10:40



Kabuk betikleri bir şekilde daha az resmi mi? İş ilanlarından alıntı yapmak bir inandırıcı mıdır? Ve bir devops oldukça utanç vericidir, çünkü bir geliştirici olarak yeterince seçilmemiştir. Bağlantı gerçekten ölçeklenebilirlik hakkında hiçbir şey söylemiyor. Kabuk betiklerinin ölçeklenebilir olmadığı iddiası mı? Bence Kukla ilginç ama cevabın gerekçelerinden dolayı değil. - A-B-B
İş ilanları belirli beceriler için gerçek pazarı yansıtır. Evet, amaçlanan amaç için yapılandırma yönetimini kullanmak, kabuk betiklerinden daha ölçeklenebilir, daha sağlam ve daha kolay belgelendirilebilir. Birçok ortamda bulundum ve gördüğüm çoğu betik, "üretim kalitesini" göz önüne alacak ve istisnaları halledecek şekilde düzenlenecek şekilde inşa edilmiyor. Nedenini anlamak için kabul edilen cevaba bakınız. - ewwhite
"Ve bir devops oldukça utanç verici, çünkü bir geliştirici olarak yeterince seçilmemiş." Bu doğru değil. DevOps, Web Geliştirme gibi bir geliştirme uzmanlığıdır. Yazılım geliştirme kalıpları ve uygulamaları hala geçerlidir. DevOps hakkında okumalısın. - Chaim Eliyah


Şef yönetmek ve yönetmek için çok daha kolay hale getirir versiyon karmaşık bir altyapının kurulumu, özellikle de herhangi bir bulut ortamında, standart olmayan bir şekilde düzenlenmiş bir grup kabuk komut dosyasını elle sıkıştırmak veya kopyalamak zorundadır. Kaç tane bağımlılığa ihtiyaç duyduğunuza bağlı olarak, bu kazancın büyüklüğü büyük ölçüde değişebilir; bu karar, bir CM çözümü için pek çok kişi için açık olmayan bir karar verme yoluna gitmelidir.

Şefin gerçek (çoğu kez unsung) yararı idempotence. Çakışan çıkarlarla çalışan tariflerin birleşiminden bağımsız olarak bir kaynağın durumundan emin olmak, kabuk komut dosyası yapılandırması üzerinde çok büyük bir avantajdır. Şimdi yapılandırma için kabuk komut dosyalarınız varsa, kendisinden kaçının istenmeyen / istenmeyen sonuçlara yol açmadan kaç defa çalıştırılabileceğini sorun.

Uygun bir CM çözümü, platformlar arası otomasyon ve ekip işbirliğini basitleştirerek başarıyı ölçeklendirmeye yardımcı olur. Bütün bunları iyi organize edilmiş, düzgün bir şekilde korunan, versiyonlanmış bir grup kabuk betiği ile gerçekleştirmek mümkün olsa da; kendine "neden" diye sormalısın. Şef / Kukla ve benzeri teknolojiler ortaya çıktı çünkü bir grup yetenekli SysOps, aynı sorunları tekrar tekrar çözmek zorunda kalmaktan sıkıldı ve bize daha iyi bir seçenek sunmaya başladı.

Anahtar parçalar:

  • Idempotence
  • Bağımlılık Yönetimi Kolaylığı (versiyonlama)
  • Standart Organizasyon (endüstri düzeyinde kabul edildi)
  • Sunucu yapılandırma görevlerini sistem düzeyinde ayrıntılardan ayırmak için soyutlama
  • Topluluk bilgisinden yararlanma yeteneği (yukarıdaki prensiplerin tümünü kapsadığı garanti edilir)

13
2018-05-03 19:11



İdrara çıkma, ss ile neredeyse imkansızdır. Bağımlılıklar yum / apt, vb. Tarafından iyi yönetilmektedir. Kabul konusu önemsizdir. Topluluk bilgisi ss için var. Bununla birlikte, bir sürü komut dosyasını kopyalamak zorunda olmadığımı ve sistemlerin merkezi olarak yapılandırılmasının da yararlı olduğunu kabul ediyorum. Kuklanın müşteri tarafındaki bir ajan gerektirdiğini duydum. - A-B-B


Kukla ve Şef gibi modern konfigürasyon yönetimi araçları, belirtmek, bildirmek endişelenmek yerine bir sistemin faaliyetler yapılandırılmış bir sunucuya ulaşmak için gerekli.

Örneğin, chmod komutunuz dosyanın mevcut olduğunu, dosyanın sahibi olan kullanıcının var olduğunu, dizinlerin oluşturulduğunu vb. Varsayar. Komut dosyanız bu nedenle tüm bu önkoşulları dikkate almalıdır.

Durum tabanlı yapılandırma yönetimi araçları daha basittir: yalnızca dosyanın doğru izinlere sahip olmasına dikkat edin. Bunun nasıl başarıldığı, aracın problemidir.


10
2018-05-20 02:19



Aslında benim chmod Dosyanın varolan bir dosya tarafından oluşturulduğu veya varolan bir sınama için oluşturulduğu için dosyanın var olduğunu varsaymaz. - A-B-B


Eğer sunucular sizin için tek kullanımlıksa veya bir seferde birden fazla durmak için bir nedeniniz varsa, tam gelişmiş bir CM sistemi ihtiyaçlarınızı karşılamak için bir dizi kabuk betiğinden çok daha iyi olacaktır.

Yapım ihtiyaçlarınız mütevazı ise (ya da serbest elverişli organik serbest ticaret yapan adil ticaret sunucularına el uzatmak gibi), o zaman bunu basit tutun.

Şahsen, eski bir konserde şefi yoğun bir şekilde kullanmışken, bu konserde 'basit tut' yapmaya teşebbüs ettim, ama şefin sağladığı ilkel, soyutlama ve gücü gerçekten özledim. Birkaç kabuk komutundan ihtiyacınız olanı alabileceğiniz bir duruma ulaşmış olsanız bile, bir 'komut' bloğu ile bunları çalıştırabilirsiniz, kabuk komutlarınızı tam olarak kabuk içine yazdığınız gibi girebilirsiniz.

Bununla birlikte, Şef'i bir sunucu (şef-solo) olmadan çalıştırabiliyorsunuz ve eminim ki Puppet'in bir analogu var; burada merkezi bir sunucu çalıştırmadan başkalarının yemek kitaplarını ve yemek tariflerini kullanabiliyorsunuz.

Bir diğer fayda topluluktur: Bir çok insan vardır (birçoğu sizden daha akıllı ve / veya daha deneyimli olacak). Şahsen ben başkaları benim işimi yaptıktan sonra, çoğu zaman sahip olduğumdan çok daha fazla seviyorum.


9
2018-05-01 22:32





Kabuk betiği tabanlı bir sunucu otomasyon çerçevesi oluşturdum: https://github.com/myplaceonline/posixcube

Eminim, bu tür bir projeyi ilk yapan ben değilim, ama ihtiyaçlara uyacak bir şey bulamadım, bu yüzden başkalarının bunu yararlı bulabileceğini düşündüm. Sadece Şef'le deneyimim vardı, ama Ansible ve diğerlerine bakmaya başladığımda, kabuk betiklerini bir vuruş vermek istedim ve sonucu çok beğendim.


1
2017-12-25 01:15