PowerShell Desired State Configuration – Overview – Part I

By | 19 March 2017

Uzun süredir yazmak istediğim bir konu olan Powershell Desired State Configuration’a bugün bir giriş makalesi ile başladım.

Sonrasında tüm mimariyi adım adım anlatmayı planlıyorum.

İlk makale biraz genel bilgi niteliğinde olduğu için temel başlıklara değinmek istedim. Serinin diğer bölümlerinde daha derinlemesine anlatım ile devam edeceğim. Umarım faydalı bir seri olur.

DSG konfigürasyonları yönetmeyi ve deploy etmeyi sağlayan Windows Powershell içerisindeki yeni yönetim platformudur.

Powershell 4.0 ile gelmiştir. Powershell 5.0 ile birlikte v2 durumundadır.

Bünyesinde ortamı konfigüre etmek için resource’ları, yeni windows cmdlet’lerini ve dil extensions’larını barındırır.

Özetle DSC PowerShell ile compliance management yapmayı sağlayan bir platformdur.

DSC kullanmanın sağladığı önemli avantajları sıralayacak olursak;

  • DSC sistem yöneticilerinin yaptıkları konfigürasyonların tutarlı şekilde ve daimi olmasını sağlar.
  • DSC kullanılarak yapılan işlemlerde çok uzun süren işler daha kısa sürelerde hata payı elemine edilerek yapılır.
  • DSC kullanılarak yapılan test ve deployment senaryoları birbiri ile tutarlıdır.
  • Deployment sırasında yaşanacak hata olasılığı azalır çünkü her zaman aynı konfigürasyon uygulanır.

DSC söz konusu olduğunda kullanılacak anahtar kelime “Time Saver” dır.

DSC kullanılarak yapılacak işlemler örnek olarak aşağıdaki gibidir.

  • Server role ve feature’larının etkinleştirilmesi yada kaldırılması
  • Registry key’lerin yönetilmesi
  • Dosya ve dizinlerin yönetilmesi
  • Process ve servislerin çalıştırılması,durdurulması ve yönetilmesi
  • Kullanıcı ve grup’ların yönetilmesi
  • Yeni uygulamaların deploy edilmesi
  • Ortam değişkenlerinin yönetilmesi
  • Windows Powershell script’leirn çalıştırılması
  • Desired state dışına çıkan konfigürasyonların tekrardan düzenlenmesi
  • Belirlenen node’daki geçerli konfigürasyon durumunun discover edilmesi

Bu genel bilginin ardından powershell DSC’nin nasıl çalıştığına göz atalım.

PowerShell DSC Nasıl Çalışır ?

  1. Öncelikle powershell kullanılarak bir konfigürasyon scripti yazılır. Bu script ilk aşamada herhangi bir şey yapmaz. Script sadece konfigüre edilecek bileşenlerin listesini ve nasıl konfigüre edileceklerini içerir. Konfigürasyon ayrıca scriptin uygulanacağı makineleri de içerir.
  2. Script çalıştırıldığında her bir hedef makine için bir adet MOF(Management Object Format) dosyası içerir. Aynı konfigürasyona sahip olan makineler (Örneğin aynı web farm’ın üyeleri) aynı Mof dosyasını ve configuration ID’sini kullanabilirler.
  3. Bu işlemin ardından MOF dosyaları ilgili hedef makinelere dağıtılabilir. Her hedef makine sadece bir MOF dosyasına sahip olabilir.
  4. MOF’u alan hedef makine MOF’ta tanımlanan konfigürasyona göre kendisini konfigüre etmeye başlar.

MOF(Managed Object Format) Nedir?

MOF endüstri standartı bir formattır. Bir çok platform’da desteklenmektedir. Belli araçlar kullanılarak MOF dosyaları kolaylıkla yazılabilir.

Powershell DSC ile oluşturulan mof doysaları farklı platformlarda da kullanılabilir. (Örneğin client node linux işletim sistemine sahip olabilir. )

Powershell DSC mimarisinde MOF dosyası otomatik olarak oluşturulmaktadır.

Özetle DSC mimarisinde MOF kullanılmasındaki temel amaç cross-platform desteği sunmaktır.

MOF’un hedef makinelere dağıtılmasında 2 çeşit metod kullanılır. Bunlar;

  • Push Mode: WinRM kullanılarak basit şekilde MOF dosyalarının hedef makinelere kopyalanmasıdır.
  • Pull Mode: Bu mode ile hedef makine özel bir web server kullanarak kendisi için konfigürasyon olup olmadığını belli aralıklarla kontrol eder. Kontrol etme işlemi client node üzerinde çalışan LCM(Local Configuration Manager) ile yapılır. Bir kez konfigüre edildikten sonra bir kaç dakikada bir MOF dosyasındaki konfigürasyon ile üzerinde bulunan konfigürasyonun eşleşip eşleşmediğini kontrol eder.

Canlı ortamda uygulanacak bir senaryoda kullanılacak yöntem genellikle pull mode’dur. Pull mode ile hedef makine sadece kendi konfigürasyonunu kontrol etmez ayrıca MOF file üzerinde herhangi bir update olup olmadığını da kontrol eder.

Local Configuration Manager (LCM):

LCM powershell DSC mimarisinde client node’lar üzerinde işletim sistemi ile birlikte gelen bir engine’dir.

DSC mimarisindeki tüm node’lar üzerinde çalışır.

Node için konfigürasyon olup olmamasını kontrol eder ve eğer konfigürasyon varsa kabul edilmesini sağlar.

LCM konfigürasyonları alırken yukarıda bahsettiğim metodlardan birini kullanır. (Pull yada Push)

Client node için konfigürasyon sorogulama sıklığı LCM üzerinde konfigüre edilir.

Node’un pull server ile iletişim kurmasını sağlar.

Client node’lar üzerinde çalışan LCM’i konfigüre etmek için de MOF dosyası oluşturulur. Bu MOF diğerlerinden farklı olarak Meta tagını içerir.

MOF oluşturulduktan sonra “Set-DscLocalConfigurationManager” cmdlet’i kullanılarak ilgili node’lara LCM konfigürasyonu push edilir.

DSC Resources:

DSC Resource’lar DSC konfigürasyonları için bir nevi şablon sağlarlar.

Resource’lar kullanılarak konfigürasyon dosyalarındaki schema belirlenir ve barındırdıkları powershell scriptleri LCM kullanarak konfigürasyonları client node’ları üzerinde uygular.

Özetle resource yapılacak konfigürasyonu modeller.

Windows PowerShell 5.0 ile gelen builtin resource’lar aşağıdaki gibidir.

Powershell gallery bunlara ek olarak bir çok custom ve MS tarfından yayınlanmış resource’u içermektedir.

DSC V2 Yenilikleri:

Powershell 5.0 ile DSC v2 olarak yayınlanmıştır. DSC V2 ile gelen yenilikler şu şekildedir.

  • Artık Compliance Server özelliği kaldırılmıştır. Yerine Report Server özelliği gelmiştir.
  • Pull server’a registration işlemi için configuration ID yerine Registration Key kullanılmaktadır.
  • Pull server üzerinden konfigurasyonlar artık isim olarak istenebilmektedir. Mof dosyalarının configuration ID kullanılarak tekrardan isimlendirilmesine gerek yoktur. (İki metod halen desteklenmektedir ancak yeni metod işi daha kolay bir hale getirmiştir)
  • Partial configuration desteği gelmiştir.

Registration Key:

V2 ile gelen Registration Key özelliği client node’u pull server’a register etmek için kullanılır.

Registration key bir text dosyasında saklanan guid’den ibarettir.

V1’de kullanılan configuration ID’nin yerine getirilmiştir.

Registration Key Pull server’a bağlanacak client’ların LCM’si konfigüre edildiği her seferde kullanılır.

Report Server:

LCM node konfigürasyon durumuna ilişkin bilgiyi pull server’a raporlayacak şekilde konfigüre edilebilir. Bu şekilde yapılan konfigürasyon sayesinde LCM node aynı konfigürasyonu tekrar alabilmek için pull server’a sorguda bulunur.

Client node her zaman yeni konfigürasyonları kontrol eder ve eğer yeni konfigürasyon varsa alır. Sonrasında da report server’a bu işlemi raporlar.

Alınan raporlar server üzerinde bir database’de tutulur. Reporting web service’e yapılan sorgularla elde edilebilir.

Report server üzerinde bulunan raporlar hangi konfigürasyonların uygulandığı, hangilerinin başarılı olduğu, kullanılan kaynaklar, konfigürasyondan kaynaklanan hatalar vb. gibi bilgileri içerirler.

Temel olarak powershell dsc ve v2 ile gelen yenilikler bu şekilde.

Bir sonraki bölümde sırasıyla konfigürasyonu anlatacağım.

Kaynak: https://msdn.microsoft.com/en-us/powershell/dsc/overview

Kaynak 2:

Fırat

Leave a Reply