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.rb
ile 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, knife
Chef 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:
root
Bir 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-client
belirtilen listelenen virgülle ayrılmış çalışma kullanılmıştır. Bu örnekte sadece webserver
rol 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.