PowerShell Desired State Configuration – SMB Pull Server Deployment – Part 3

By | 26 March 2017

Bir önceki makelemde PowerShell DSC ile push metodunun nasıl kullanılacağını anlatmıştım.

Bu bölümde de Pull metodundan birisi olan SMB Pull’dan bahsedeceğim. Ardından Web Pull Server yöntemi ile devam edeceğim.

DSC mimarisinde pull model temelde iki şekilde uygulanır.

  1. Web Pull Server
  2. SMB Pull Server

DSC makale serisinin bu bölümünde sizlere SMB Pull Server’ın özelliklerinden ve nasıl uygulandığından bahsedeceğim.

Temel olarak SMB Pull Server, Hedef makinelerin DSC konfigürasyon dosyalarına ve DSC resource’lara SMB file share aracılığı ile eriştiği DSC mimarisidir.

SMB file share mimarisini kullanmak için aşağıdaki bileşenlere ihtiyaç vardır:

  1. Minimum powershell 4.0 ve üzeri yüklü bir makine üzerinde SMB dosya paylaşımı oluşturulması
  2. Minimum powershell 4.0 yüklü hedef makinelerin konfigürasyonu SMB dosya paylaşımından çekecek şekilde ayarlanması

Normalde pull server olacak makine üzerinde bir klasör oluşturulup bu klasör DSC konfigürasyonu için share edilebilir.

Fakat madem konu DSC, bu dosyanın oluşturulması ve share edilmesi de DSC ile kolaylıkla yapılabilir.

Bunun için xSmbShare resource’unun “install-module” komutu ile yüklenmesi yeterli olacaktır.

Tabi bir de smb pull server konfigürasyonu yapılacağı için PSDesiredStateConfiguration resource’u da indirilmelidir.

Aşağıdaki komutlar sırası ile çalıştırılarak gerekli resource’lar powershell gallery üzerinden yüklenebilir.

Resouce’lar PowerShell gallery üzerinden yüklendikten sonra yapılması gereken işlem paylaşılacak klasörü, Sharing’i ve ntfs izinlerini ayarlayacak konfigürasyon dosyasını hazırlamak.

Bu işlem için aşağıdaki konfigürasyon scripti kullanılarak mof uzantılı konfigürasyon dosyası SMB pull server için oluşturulmalıdır.

Konfigürasyon dosyasını biraz açıklayacak olursak;

  • CreateFolder bileşeni verilen dizin üzerinde DSCSMB isimli klasörü oluşturur.
  • CreateShare bileşeni oluşturulan dosyanın paylaşılmasını sağlar.
  • PermissionSet1 ise paylaşılan klasör üzerindeki NTFS izinlerini düzenler.

Konfigürasyon scriptinin ardından DSCSMB -OutputPath c:\DSC\Config komutu çalıştırıldığında belirtilen lokasyonda SMB Pull server için konfigürasyon dosyası oluşturulur.

Oluşturulan konfigürasyon dosyası Start-DscConfiguration komutu kullanılarak pull server’a deploy edilir.

SMB file share oluşturma işleminin ardından konfigürasyon dosyaları paylaşılabilir duruma geldi. Sırada ikinci işlem var.

İkici işlemde ise yapılması gereken hedef makinelerin LCM’lerinin smb pull aracılığı ile konfigürasyon çekebilecek duruma gelmesi.

Burada dikkat edilecek bir nokta var. Powershell 5.0 ile birlikte configuration ID yerine configuration name kullanılmaya başlanmıştı.

Configuration Name web pull yönteminde desteklenmekte ancak SMB pull yönteminde şu anda böyle bir destek yok. O sebeple bu mimari de Powershell 4.0 da olduğu gibi configuration ID kullanmak gerekmektedir.

SMB file share kullanılırken dikkat edilmesi gereken bir kaç önemli nokta var. Bunlardan kısaca bahsedecek olursak;

  • Resource’lar SMB share aracılığı ile hedef makineler ile paylaşılırken ziplenmesi ve {Module Name}_{Module Version}.zip şeklinde isimlendirilmesi gerekir. (Örn: xWebAdministration_3.2.1.0.zip)
  • Farklı versiyondaki her modul farklı bir zip dosyası olarak share edilmelidir.

Oluşturulan konfigürayon dosyaları için Checksum oluşturulması gerekir. Bu sayede hedef makine konfigürasyonunun doğrulamasını yapabilir. Oluşturulan checksum dosyası konfigürasyon dosyasının bulunduğu lokasyonda olmalıdır ve konfigürasyon dosyası ile aynı isimde olmalıdır.

Checksum dosyasının uzantısı .checksum şeklindedir. Checksum dosyası her konfigürasyon dosyası için ayrı ayrı oluşturulmalıdır.

NOT: Konfigürasyon dosyasında bir değişiklik olduğunda checksum dosyasının tekrardan oluşturulması gerekmektedir.

Hedef makine üzerindeki LCM konfigürasyonu aşağıdaki script kullanılarak yapılabilir.

Scriptin Çalıştırılmasının ardından belirtilen lokasyonda hedef makinenin LCM’ini konfigüre eden meta mof dosyası oluşturulur.

Burada dikkat edilecek nokta configuration ID için bir guid üretilmesidir. Üretilen bu guid konfigürasyon dosyası ile birlikte client’a deploy edilir.

Bu işlemin ardından oluşturulan LCM config içeren meta mof dosyasının hedef makine üzerinde deploy edilmesi gerekir. Bunun için aşağıdaki komut kullanılır.

Client’a deploy edilen configuration ID aşağıdaki gibi görünür. Client bu ID’yi kullanarak belirtilen share üzerinde konfigürasyon arayacaktır.

LCM konfigürasyonunun ardından basit bir konfigürasyon oluşturup SMB share’e atalım.

Baist olarak Werbserver özelliğini etkinleştiren aşağıdaki konfigürasyon scriptini çalıştırıp konfigürasyon içeren mof dosyasını oluşturalım.

Scriptin çalışmasının ardından TARGETNODE1.mof isimli dosya oluşacaktır.

SMB pull “configuration name” özellğini desteklemediği için, eski yöntemde yapıldığı gibi MOF dosyası client ID’deki guid kullanılarak yeniden isimlendirilir.

Yani mof dosyasının yeni ismi a0c0721a-f3ff-43c6-b3b8-fc7fc78830d6.mof yapılır. Bu dosyaya ait checksum’ı oluşturmak içinde aşağıdaki komut kullanılır.

Yapılan işlemlerin ardından MOF dosyası ve dosyaya ait checksum aşağıdaki gibidir.

Son olarak hedef makine üzerinde Update-DSCConfiguration komutu çalıştırılarak LCM’in belirtilen paylaşım üzerinde konfigürasyon taraması yapması tetiklenir ve hedef makine kendisine atanan konfigürasyonları alır.

İşlemin ardından hedef makine üzerinde Get-DSCConfiguration komutu kullanılarak konfigürasyon doğrulanır.

Hedef makine üzerindeki IIS bileşeni web üzerinden kontrol edildiğinde başarılı şekilde kurulduğu görülür.

SMB pull ile konfigürasyon dağıtma işlemi bu şekilde gerçekleşir. Bir sonraki bölümde web pull yöntemini anlatacağım.

Görüşmek üzere.

FIRAT

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

Kaynak 2: https://mva.microsoft.com/en-us/training-courses/getting-started-with-powershell-desired-state-configuration-dsc–8672

Konfigürasyon adımları ve scriptler aşağıdaki gibidir.

 

#######BasicConfigForSMBPull.ps1#######

#######LCMConfiguration.ps1##########

 

#############CreateSMBPullServer.ps1#############

Leave a Reply