Şefin En İyi Uygulamaları / Sorular


48

Kukla'ı kullanıyorum ve seviyorum. Yeni bir şirkete taşındım ve onlar şefi kabul ediyorlar. Bu yüzden Chef'i öğrenmeye çalışıyorum ama hepsini bir araya getirmekte zorlanıyorum çünkü hala Kukla'da düşünüyorum =)

Bunlar benim sorularım:

  • Rolleri Ruby DSL, JSON veya yönetim konsolundan ayarlamak daha mı iyi? Neden aynı şeyi yapmanın birden fazla yolu var?
  • Yemek kitapları alt dizinlerde düzenleyebilir misiniz? örneğin: bir yemek kitabı yazmak ve buna eklemek istediğim özel bir yazılımımız var: chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook bu iyi bir uygulama olur mu?
  • Her rol türü için ne işe yaradığını belirten bir yemek kitabı oluşturuyor muyum? Bu yemek kitapları başka yemek kitapları içeriyor mu (ör. Web sunucusu görevim için yemek kitabı apache yemek kitabını içerir). Yemek kitabı bağımlılıkları ve kalıtımın nasıl ele alındığından emin değilim.
  • Puppet'in harici düğüm sınıflandırıcısına benzer bir şey var mı, böylece düğümler rollerini otomatik olarak belirliyor mu?
  • Bir şeyleri bıçakla veya yönetim konsolu ile yapılandırabilir veya JSON dosyalarını düzenleyebileceksiniz gibi görünüyor. Bu benim için çok kafa karıştırıcı bir şey yapmanın neden bu kadar çok yolu olduğunu, felç edici! Birini veya diğerini kullanmak için bir sebep var mı? Kukladan gelince, bu araçlarla bir şeyi yanlışlıkla yanlış yapılandırmak kolay olacak gibi görünüyor (yani bir şeyi dışarıda bırakarak)
  • Dev kümesindeki Chef ile düğümleri otomatik olarak nasıl sağlayabilirim? Kukla ile kuklacıya bağlanan ve bir kukla koşusunu başlatan ve kendini ayarlayan bir VM başlattım (rol dış düğüm sınıflandırıcı tarafından belirlenir). Bunu Chef ile nasıl yaparım? Bir şef sunucusuna bağlayan şefi pem / rb dosyaları ile kurun, düğüme rollerini bıçakla elle söyleyin veya yönetim arabiriminde düzenleyin ve ardından kendi kendini ayarlamak için bir şef-müşteri çalışmasını başlatıyor musunuz?

Başlarken eğitimlerini tamamladım ve EC2 öğreticileri olduğunu görüyorum, ancak EC2'yi hiç kullanmadım, bu yüzden takip etmeleri zor. Bu noktada çalışan şefe ev sahipliği yaptım ve tek bir düğümü yapılandırmayla oynamaya başladım. Buradan nereye giderim? Halka açık yemek kitaplarına bakmaya başlamalı mıyım?

Opscode'daki dokümanlar tamam, ama kuklalarınki kadar iyi değil. Aramalarımda eksik olabileceğim başka şef kaynakları var mı?


5
Bir yayında çok fazla soru var. Her birini kendi haline ayırmayı düşünün. Topluluk için bir bütün olarak daha iyidir ve ayrıca sizi daha iyi, daha ayrıntılı cevaplar alır.
Wesley

Yanıtlar:


84

Düzenle Bu soru ve cevap yaşında. Kesin en iyi uygulamalar, Chef Software, Inc. tarafından üretilen Chef ralliyi kendi kendine eğiten eğitim modülleriyle öğretilir . Orijinal cevabın büyük kısmı aşağıdadır.

Bu cevapta, "Şef" veya "şef-müşteri" genellikle ürün olan Şef Infra'ya atıfta bulunur. Opscode , 2013 yılında Chef Software, Inc olarak yeniden adlandırıldı . 2019 yılının Nisan ayında, Chef , tüm markaların kaynak kodunu açtı ve tutarlı marka isimleri oluşturdu.

Rolleri yakut DSL, JSON veya yönetim konsolundan kurmanın daha iyi olup olmadığı net değil mi? Neden aynı şeyi yapmanın birden fazla yolu var?

2019 Güncelleme : Politika dosyaları kullanılacak en iyi iş akışıdır. Roller düşük bir uygulama olarak kabul edilir ve Chef Software, Inc., Policyfiles'e geçmenizi önerir.

Aynı şeyi yapmanın birçok yolu var çünkü insanlar farklı iş akışlarına sahipler. Ortamınız için en uygun olan iş akışını seçersiniz. Farkların ne olduğunu açıklamama izin verin ki bilinçli bir karar verebilesiniz.

Roller için Ruby DSL, JSON'un sözdizimini bilmeden rol yazmayı kolaylaştırmak için bulunmaktadır. Rollerle başlamak için basit bir yoldur. Değişiklikleri yaptıktan sonra, bunları Chef Sunucusuna bıçakla yüklersiniz.

knife role from file myrole.rb

Bu, rolü JSON'a dönüştürür ve sunucuda depolar. Rollerinizin gerçeğin kaynağı olarak yaşadığı Chef Repository'yi zorlayan bir ortamınız varsa, bu oldukça iyi sonuç verir.

JSON, Chef Server'ın depoladığı şeydir, bu nedenle JSON'u doğrudan yönetim konsolunda da düzenlersiniz. Bıçak'ın yüklenmesini doğru şekilde tanıması için Ruby DSL'den daha fazla alan gerektirir. Bu detaylar bir dereceye kadar web UI üzerinden gizlenir.

Rolleri düzenlemek için webui / management konsolunu kullanmanın dezavantajı, siz onları sunucudan indirmediğiniz sürece yerel sürüm kontrol sisteminizde bulunmamasıdır. Bunu bıçakla yapabilirsin:

knife role show myrole -Fj

-Fj"JSON biçiminde ekrana." Bıçağı söyler İsterseniz çıktıyı bir .json dosyasına yönlendirebilirsiniz.

Yıllar önce güncelleme : Yerel şef deposundaki dosyalarla çalışmak için ek bıçak komutları var. Şu anda bu komutlar yalnızca JSON formatındaki dosyaları desteklemektedir. Bu eklentiler için Ruby DSL desteğinin eklenmesini hedefleyen bir topluluk RFC açıktır. İşte iş akışının kısa bir özeti.

Sunucu ve yerel dosya arasındaki içerik farklarını kontrol edin.

knife diff roles/myrole.json

JSON formatlı bir rol dosyası yükleyin. roles/Yol gereklidir. Bu, sunucudaki aynı API uç noktasına eşlenir.

knife upload roles/myrole.json

İçeriği, havuzdaki dosyanın içeriğinin üzerine yazarak sunucudan indirin.

knife download roles/myrole.json

Bu komutlar knife-essentials, şef müşteri paketinde yerleşik olarak bulunur.

Yemek kitapları alt dizinlerde düzenleyebilir misiniz? örneğin- bir yemek kitabı yazmak ve buna eklemek istediğim özel bir yazılımımız var: chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook bu iyi bir uygulama olur mu?

Hayır. Knife, yemek kitaplarının nerede yaşaması gerektiğine dair bir beklenti içeriyor çünkü yemek kitaplarını Sunucuya yüklemek için bir API kullanıyor. Bu ayarlanır knife.rbile cookbook_path. Chef Infra'nın eski sürümlerinde, yemek kitapları için bir dizi yol belirleyebilirsiniz, ancak bu daha fazla bakım gerektirdiği ve kullanıcılara kafa karıştırıcı olduğu için kullanımdan kaldırılmıştır.

Kurallara göre, müşteriye özgü veya siteye özgü yemek kitapları için, yemek kitabı iş tanımında belirtilmiş olan adı yazın. Örneğin, şöyle olurdu:

chef-repo/cookbooks/ourcompany_customsoftware

Ne yaptığınıza bağlı olarak "şirketimiz" için birden fazla farklı yemek kitabı olabilir.

Ek referans:

Her rol türü için ne işe yaradığını belirten bir yemek kitabı oluşturuyor muyum? Bu yemek kitapları başka yemek kitapları içeriyor mu (yani, web sunucusu görevim için yemek kitabı apache yemek kitabını içerir). Yemek kitabı bağımlılıkları ve kalıtımın nasıl ele alındığından emin değilim.

Rollerle yemek kitapları arasında doğrudan bir ilişki veya bağımlılık yoktur.

Roller, tarifleri ve bu rolü olan herhangi bir düğüme uygulanması gereken diğer rolleri belirten bir çalışma listesine sahiptir. Düğümlerin rolleri veya tarifleri içerebilen bir çalışma listesi vardır. Chef düğümü çalıştırdığında, içerdiği tüm roller ve tarifler için çalıştırma listesini genişletir ve ardından gerekli yemek tariflerini indirir. Bir düğüm çalıştırma listesinde:

recipe[apache2]

Şef apache2, düğüm için yemek kitabını indirecek, böylece bu tarifi uygulayabilecektir.

Altyapınızdaki bir rol için özel bir yemek kitabınız olabilir. Daha yaygın olarak, apache2, mysql, redis, haproxy vb. Gibi belirli hizmet türlerini ayarlamak için yemek kitaplarına sahip olacaksınız. O zaman bunları uygun rollere koyacaksınız. Bir rolü yerine getirmesi gereken özel uygulamalara özel şeyleriniz varsa, bunu özel bir yemek kitabına yazabilirsiniz (yukarıda bahsettiğim gibi).

Ek referans:

Kuklaların harici düğüm sınıflandırıcısına benzer bir şey var mı, böylece düğümler rollerini otomatik olarak belirliyor mu?

"Evet." Chef Infra Server otomatik olarak düğüm veri depolaması yapar (JSON'da) ve sunucu ayrıca tüm düğüm verilerini arama için otomatik olarak indeksler.

Ek referans:

Bir şeyleri bıçakla veya yönetim konsolu ile yapılandırabilir veya JSON dosyalarını düzenleyebileceksiniz gibi görünüyor. Bu benim için çok kafa karıştırıcı bir şey yapmanın neden bu kadar çok yolu olduğunu, felç edici! Birini veya diğerini kullanmak için bir sebep var mı?

Chef Infra Server, JSON yanıtları gönderen ve alan RESTful bir API'ye sahiptir. Knife ve yönetim konsolu, API ile yönetim açısından etkileşime giren kullanıcı arayüzleridir.

Yönetim konsolunda Bıçak kadar özellik bulunmasa da, aracı daha iyi kullanmak için kullanabilirsiniz. Chef Infra kullanan çoğu kişi, Windows'ta Chef Infra kullananlar için sağladığı güç ve esneklik için komut satırı arabirimini tercih eder. Ayrıca, knifeChef Infra Server ile veya altyapınızın diğer bölümleriyle etkileşimde bulunmak için yeni eklentiler oluşturabileceğiniz eklenti tabanlı bir araçtır.

Chef Infra bir dizi kütüphane, ilkel ve bir API'dir. Altyapınız için en uygun konfigürasyon yönetim sistemini kurma esnekliği sağlar.

Daha fazla okuma:

Dev kümemdeki şefle düğümleri otomatik olarak nasıl sağlayabilirim? Kukla ile kuklacıya bağlanan ve kukla koşusunu başlatan ve kendini ayarlayan bir VM başlattım (rol harici düğüm sınıflandırıcı tarafından belirlenir). Bunu şefle nasıl yaparım? - Chef'i bir chef sunucusuna bağlayan pem / rb dosyalarına kurun, düğüme rollerini bıçakla elle söyleyin veya yönetim arayüzünde düzenleyin ve ardından bir şef-müşteri çalışmasını başlatmak için kendini başlattı mı?

Bıçak açılış eklentisini kullanmak isteyeceksiniz. Bu, bıçakla birlikte gelen yerleşik bir eklentidir. Bunu böyle çağırdın:

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

Bu irade:

  • rootBir SSH anahtarı kullanan kullanıcı olarak hedef sisteme SSH (10.1.1.112) (başka bir kullanıcı olarak ssh ve sonra kullanabilirsiniz --sudo).
  • Ruby'yi yükle
  • Chef'i yükleyin
  • Chef sunucunuz için Chef konfigürasyon dosyasını oluşturun, bıçağın konfigürasyonunu okuyun (.chef / knife.rb).
  • Düğümün otomatik olarak Chef Server'a kaydolması için kullanacağı "doğrulama" RSA özel anahtarını kopyalayın.
  • Çalışma chef-clientbelirtilen listelenen virgülle ayrılmış çalışma kullanılmıştır. Bu örnekte sadece webserverrol uygulanır.

Bu, hedef sistemin sağlandığını, bir IP adresine sahip olduğunu ve root olarak SSH olabileceğini varsayar. Yerel politikalarınıza ve sağlama sürecinize bağlı olarak, bunun nasıl çalıştığını ayarlamanız gerekebilir. Vikideki bıçak önyükleme sayfası bunun nasıl çalıştığı hakkında daha fazla bilgi verir.

Knife ayrıca Amazon EC2 ve Rackspace Cloud gibi çok sayıda genel bulut bilgi işlem sağlayıcısı için eklentilere sahiptir. Okaliptüs ve OpenStack gibi özel bulut ortamları için eklentiler bulunmaktadır. VMware, Vsphere ve diğerleri için eklentiler de vardır. Daha fazla bilgiyi belgelerde görebilirsiniz.

Daha fazla okuma:

Aramalarımda eksik olabileceğim başka iyi şef kaynakları var mı?

Şef Belgeler dokümantasyon ana kaynağıdır.

Bilgi Şef Ralli tüm şef Enf çeşitli yönleri ve diğer şef ürünler hakkında bilgi alabilmeleri kendinden güdümlü modülleri dizisidir.

Http://jtimberman.housepub.org/ adresinde Chef Infra hakkında ipuçları, püf noktaları ve rehberler yayınladığım bir blog tutardım . Hızlı ipuçları denilen bir dizi vardı . Gerçek hayat koşulları ve diğer taahhütler nedeniyle, siteyi sürdürmek için artık zamanım yok, ancak gelecekte geri dönebilirim.

Şef müşterileri, destek sitesinde yardım ve destek alabilir:

Chef kullanıcısı topluluğu mükemmel bir ek yardım kaynağıdır:

Chef Software, Inc.'in web sitesinde ek kaynaklar mevcuttur .

Umarım bu yardımcı olur.


2
Bu değerli bir kaynaktır, lütfen daha sık bağlantı kurun.
Pooyan Khosravi,

7 yıl sonra ekleyecek / güncelleyecek bir şey var mı? ;)
Spechal
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.