Kukla - Genel Bakış

Puppet, altyapı yönetimi ve yapılandırmasını otomatikleştirmek için Puppet Labs tarafından geliştirilen bir yapılandırma yönetim aracıdır. Puppet, kod olarak Altyapı kavramına yardımcı olan çok güçlü bir araçtır. Bu araç, eksiksiz bir altyapının kolayca yönetilebilen ve yapılandırılabilen kod biçiminde dönüştürülmesine yardımcı olan Ruby DSL dilinde yazılmıştır.

Puppet, herhangi bir kümedeki bir makinenin sunucu olarak hareket ettiği, kukla yöneticisi olarak bilinen ve diğerinin düğümlerde köle olarak bilinen bir istemci olarak hareket ettiği istemci-sunucu modelini takip eder. Puppet, herhangi bir makinenin ilk yapılandırmasından kullanım ömrünün sonuna kadar herhangi bir sistemi sıfırdan yönetme yeteneğine sahiptir.

Kukla Sisteminin Özellikleri

Puppet'in en önemli özellikleri aşağıdadır.

Idempotency

Puppet onu benzersiz kılan Idempotency'yi destekler. Chef'e benzer şekilde, Puppet'ta, aynı yapılandırma setini aynı makinede birden çok kez güvenle çalıştırabilirsiniz. Bu akışta Puppet, hedef makinenin mevcut durumunu kontrol eder ve yalnızca yapılandırmada belirli bir değişiklik olduğunda değişiklik yapar.

Idempotency, makinenin yaratılmasından, makinedeki konfigürasyonel değişikliklerden kullanım ömrünün sonuna kadar yaşam döngüsü boyunca herhangi bir makinenin yönetilmesine yardımcı olur. Puppet Idempotency özelliği, herhangi bir yapılandırma değişikliği olduğunda, aynı makineyi birden çok kez yeniden oluşturmak yerine, makineyi yıllarca güncel tutmada çok yararlıdır.

Çapraz platform

Puppet'te, Puppet kaynaklarını kullanan Resource Abstraction Layer (RAL) yardımıyla, temel konfigürasyonda tanımlanan uygulama detayları ve konfigürasyon komutunun sistem içinde nasıl çalışacağı konusunda endişelenmeden sistemin belirtilen konfigürasyonu hedeflenebilir. dosya.

Kukla - İş Akışı

Puppet, yapılandırmayı sisteme uygulamak için aşağıdaki iş akışını kullanır.

  • Puppet'te Puppet Master'ın yaptığı ilk şey, hedef makinenin ayrıntılarını toplamaktır. Tüm Puppet düğümlerinde mevcut olan faktörü kullanarak (Ohai in Chef'e benzer), tüm makine seviyesi konfigürasyon detaylarını alır. Bu ayrıntılar toplanır ve Kukla ustasına geri gönderilir.

  • Daha sonra puppet master, alınan konfigürasyonu tanımlanmış konfigürasyon detaylarıyla karşılaştırır ve tanımlanan konfigürasyonla bir katalog oluşturur ve onu hedeflenen Puppet aracılarına gönderir.

  • Puppet aracısı daha sonra sistemi istenen duruma getirmek için bu konfigürasyonları uygular.

  • Son olarak, hedef düğümü istenen bir duruma getirdikten sonra, Puppet master'a bir rapor gönderir ve bu da Puppet master'ın, sistemin mevcut durumunun katalogda tanımlandığı gibi nerede olduğunu anlamasına yardımcı olur.

Kukla - Anahtar Bileşenler

Puppet'in temel bileşenleri aşağıdadır.

Kukla Kaynakları

Kukla kaynakları, herhangi bir makineyi modellemek için anahtar bileşenlerdir. Bu kaynakların kendi uygulama modelleri vardır. Puppet, istenen durumda herhangi bir belirli kaynağı elde etmek için aynı modeli kullanır.

Sağlayıcılar

Sağlayıcılar, temelde Puppet'ta kullanılan herhangi bir özel kaynağın yerine getiricileridir. Örneğin, paket türü 'apt-get' ve 'yum' paket yönetimi için geçerlidir. Bazen, belirli bir platformda birden fazla sağlayıcı mevcut olabilir. Her platformun her zaman varsayılan bir sağlayıcısı olsa da.

Belirgin

Manifest, herhangi bir hedef sistemi yapılandırmak için işlevin veya sınıfların içinde birleştirilen kaynaklar koleksiyonudur. Bir sistemi yapılandırmak için bir dizi Ruby kodu içerirler.

Modüller

Modül, Puppet'in temel yapı taşıdır ve kaynaklar, dosyalar, şablonlar, vb. Koleksiyonu olarak tanımlanabilir. Aynı tada sahip oldukları tanımlanarak farklı işletim sistemi türleri arasında kolayca dağıtılabilirler. Kolayca dağıtılabildikleri için, bir modül aynı konfigürasyon ile birden çok kez kullanılabilir.

Şablonlar

Şablonlar, özelleştirilmiş içeriği ve değişken girişi tanımlamak için Ruby ifadelerini kullanır. Özel içerik geliştirmek için kullanılırlar. Şablonlar bildirimlerde tanımlanır ve sistemdeki bir konuma kopyalanır. Örneğin, httpd'yi özelleştirilebilir bir bağlantı noktasıyla tanımlamak isterse, aşağıdaki ifade kullanılarak yapılabilir.

Listen <% = @httpd_port %>

Bu durumda httpd_port değişkeni, bu şablona başvuran bildirimde tanımlanmıştır.

Statik Dosyalar

Statik dosyalar, bazen belirli görevleri gerçekleştirmek için gerekli olan genel bir dosya olarak tanımlanabilir. Puppet kullanılarak bir konumdan diğerine kolayca kopyalanabilirler. Tüm statik dosyalar, herhangi bir modülün dosyalar dizininde bulunur. Bir bildirimdeki dosyanın herhangi bir şekilde değiştirilmesi, dosya kaynağı kullanılarak yapılır.