PowerShell Desired State Configuration – HTTPS PULL Server Deployment – Part 4

By | 29 March 2017

PowerShell DSC konusunu 4. Bölümünde Web Pull Server ve konfigürasyonlarından bahsedeceğim.

Daha önceki makalelere erişmek için aşağıdaki linkten faydalanabilirsiniz.

Powershell DSC Overview – Part1

Powershell DSC – Push Deployment – Part2

Powershell DSC – SMB Pull – Part 3

Web pull kullanarak DSC konfigürasyonlarının client’lara deploy edilmesi yöntemi prod ortamlarında kullanılabilecek en kullanışlı yöntemdir.

Client’lar üzerindeki refresh time’larına bağlı olarak web üzerinden kendileri için konfigürasyon olup olmadığını sorgularlar. Bu işlemler asenkron olarak gerçekleştiği için netwrok üzerinde bu işlem esnasında yüksek bir trafik oluşturmazlar.

Aslında web pull yöntemi SMB pull’dan çok farklı değil. Çalışma prensibi olarak client davranışı aynı. Sadece farklı olan şey hedef makinenin kendisi için konfigürasyon sorguladığı ve çektiği alt yapının farklı olması.

Öncelikle Web Pull yöntemini HTTP ve HTTPS olarak yapılandırabiliriz. Ben bu makalemde HTTPS olarak yapılandıracağım. Bunun sebebi prod ortamlarında tercih edilen metodu’un HTTPS olması.

HTTPS bir pull server yapılandırabilmem için ortamda sertifika otoritesi olması gerekir. Yada farklı bir otoriteden alınmış sertifika olmalıdır.

Powershell DSC mimarisinde sertifika iki şekilde kullanılır:

  1. WEB Pull server’a HTTPS bağlantı sağlamak. (Bu hedef makine ve sunucu arasındaki trafiği şifrelemek için kullanılır)
  2. MOF dosyalarının şifrelenmesini sağlamak. (Bu işlem ile configurasyon içeren MOF dosyaları içerisindeki text olarak tutulan parolalar şifrelenir. Böylece MOF dosyasını elde eden kişi parolayı görüntüleyemez.)

MOF dosyalarının şifrelenmesini sonraki makalelerimde anlatacağım. Bu makalemde HTTPS Pull Server yapılandıracağım için birinci seçenek ile devam edeceğim.

Oncelikle gerekli resorce’ları powershell get ile PSGallery üzerinden yükleyelim.

Modül kurulum işleminin ardından bir adet guid üretmek gerekir. Bu guid clientlar için gerekli olan registration key için kullanılacaktır. Eskiden kullanılan configuration ID yerine configuration name ile işlem yapmak için registration key mimarisini kullanmak gerekir.

Registration key pull server üzerinde bir text dosyada tutulur ve client’lar LCM config ile aldıkları ID’yi bu text dosyasındaki ile karşılaştırırlar. Tüm hedef makineler için aynı key kullanılabilir.

Guid’i üretmek için aşağıdaki komutu çalıştıralım.

HTTPS pull server konfigürasyonu yaparken ihtiyacımız olan bileşenlerden birisi de sertifikadır. Bu local sertifika otoritesinden kolaylıkla edinebilir. Bu sertifika Web server sertifikası tepmlate’inden üretilip yayınlanabilir. Sertifika üzerindeki ismin bağlandığımız URL ile aynı olmasına dikkat edilmelidir.

Local otoriteden sertifika birden çok yöntem ile istenebilir. Bunlar MMC,IIS,WEB Enroll vb yöntemlerdir.

Ben kolaylık olsun diye MMC üzerinden sertifikayı isteyeceğim.

Sertifikayı aldıktan sonra yapılması gereken önemki işlerden birisi konfigürasyon dosyasında kullanmak için sertifikanın thumbprint’ini belirlemek. Bunun için aşağıdaki komutu kullanalım.

Başarılı şekilde sertifikanın get edildiği doğrulandıktan sonra sertifikayı bir değişkene atayalım.

Sertifika ve guid işlemlerinin ardından PULL server için konfig hazırlama kısmına geçebiliriz. Burada Pull server hazırlama scriptini registration key ve sertifika thumbprint bilgilerini değişken olarak alacak bir script şeklinde konfigüre edelim.

Bu amaçla aşağıdaki konfigürasyon scripti çalıştırılmalıdır.

Scripti çalıştırdıktan sonra aşağıdaki komut ile konfigürasyonu içeren mof dosyası oluşturulmalıdır.

MOF dosyası oluşturma işleminin ardından dosyanın PULL server’a deploy edilmesi gerekir. Bu amaçla aşağıdaki komut çalıştırılmalıdır.

Konfigürasyonun ardından öncelikle Registration Key’in gerekli text dosyasına yazılıp yazılmadığını kontrol edelim.

Ardından Pull Server üzerindeki web servisi test edelim.

Pull server kurulumu bu kontrollerden sonra başarılı şekilde tamamlanmış görünüyor.

Hedef makinelerin oluşturulan bu web servis ile iletişim kurabilmeleri için LCM üzerindeki metodun web pull olarak belirlenmesi gerekir. Şimdi gerekli olan bu LCM konfigürasyonunu yapalım.

Gerekli konfigürasyonları içeren Meta Mof dosyasını oluşturacak script aşağıdaki gibidir.

Script metodu belirlerken aynı zamanda web url’ini,registraion key’i ve konfigürasyon ismini de hedef makineye bildirir.

LCM script’i çalıştırıldığında hedef makine için gerekli olan meta mof dosyası şekildeki gibi oluşur.

Oluşturulan bu dosyanın hedef makine üzerine deploy edilebilmesi için aşağıdaki komut çalıştırılmalıdır.

LCM konfigürasyonunun deployment işleminin ardından hedef makine üzerindeki LCM ayarları aşağıdaki gibidir.

Bu işlemlerin ardından server ve client web pull mimarisi için konfigüre edilmiş duruma geldi. Şimdi basit bir konfigürasyon oluşturup web üzerinden hedef makineye dağıtalım.

SMB Pull’da olduğu gibi konfigürasyon dosyası için checksum’da oluşturulması gerekir. SMB Pull’dan farklı olarak burada configuration ID yerine configuration name kullanılır.

Scriptin çalıştırılmasının ardından konfigürasyon ve checksum dosyaları aşağıdaki gibi oluşur.

Web üzerinden configurtaion ve module’lerin publish edilmesi için, web pull konfigürasyonu yaparken belirtilen config ve module lokasyonlarına, client için hazırlanan config ve bu config’in ihtiyaç duyduğu moduller taşınmalıdır.

Bunu powershell ile yapmak için aşağıdaki komut kullanılabilir. Yada manuel olarak da yapılabilir.

Konfigürasyon dosyası için,

Module için, (Modul’ü kopyalarken smb pull’da olduğu gibi Moduleismi_Version isimlendirme yapısına uyulması gerekir)

Bu işlemlerin ardından client üzerinde Update-DSCConfiguration komutu çalıştırılarak client makinenin web aracılığı ile konfigürasyon çekmesi sağlanır. (Makine komut kullanılmadan yeniden başlatıldığında da web seris üzerinden konfigürasyon çekecektir.)

Test-DSCConfiguration ve Get-DSCConfiguration komutları kullanılarak konfigürasyon doğrulanabilir. Şekilde görüldüğü gibi IIS üzerinde istenilen web site ve virtual directory oluşturulmuş durumdadır.

HTTPS Web Pull metodu ile konfigürasyon dağıtmak temel olarak bu şekilde konfigüre ediliyor. Bir sonraki makalede görüşmek üzere.

Fırat

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

Kaynak: http://duffney.io/Configure-HTTPS-DSC-PullServerPSv5#applies-to-windows-powershell-50

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

Yukarıda paylaştığım scriptler ve çalıştırılma sıraları aşağıdaki gibidir.

DSCPullServer.ps1

ClientLcmConfiguration.ps1

ClientDSCConfiguration.ps1

 

Leave a Reply