Powershell DSC Nedir
Powershell DSC (Desired State Configuration), Microsoft’un standartlara dayalı bir biçimde declarative modele dayalı yapılandırma yönetim sağlama girişimidir. Burada önemli bir ayrım var:
Geleneksel imperative modelde bir bilgisayara nasıl çalışması gerektiğinin talimatını verirsiniz ve bilgisayar o şekilde çalışır. Powershell DSC ise declerative modelere dayalıdır. Yani siz bilgisayara nasıl görünmesini istediği belirten bir konfigürasyon dosyası oluşrurursunuz bilgisayar artık bu konfigürasyon dosyasına göre davranması gerektiğini bilir. Aksi bir durum oluştuduğunda her zaman sizin belirttiğiniz konfigürasyona döner veya dönmeye çalışır.
Bu durum bizim imperative modelde kullandığımız, komutlar ile oldurma methodundaan farklıdır.
Geleneksel olarak, biz Windows sistem yöneticileri komut dosyalarını zorunlu modda yazarız, yani her bir komut dosyasının ince bir şekilde oluşturulması ve ayarlanması ve her bir görevi gerçekleştirmek için o komutların nasıl işleneceğini tek tek belirtmemiz gerekir. Bu gerçekten zaman alıcı bir iş. DSC ile declerative modele geçiyoruz, yani bilgisayara ne olması gerektiğini söyleyen “komut dosyaları” yazıyoruz ve bilgisayar bununla ilgileniyor. Ve geleneksel anlamda “komut dosyası” değiller çünkü çok az programlama içeriyorlar. Hem sizin hem de bilgisayarın anlayabileceği özel bir talimat seti kullanırlar.
Daha basit olarak Powershell DSC hakkında bilgi almak isterseniz aşağıdaki yazıma bakabilirsiniz.
Powershell DSC (Desired State Configuration) Nedir – Basit Anlatım
Makale İçeriği
Powershell DSC Nedir ve Konfigürasyonu Nasıl Yapılır
Aşağıdaki örnek ile Powershell DSC çok daha net bir şekilde anlaşılacaktır.
Örneğimizde Print spooler servisi olsun. Print spooler servisinin her zaman çalışır durumda olmasını sağlamak için imprerative modelde kullanılan scriptler de yok değildi. İşte aşağıdaki örnekte bir task schedulara bağladığınız takdirde print spooler servisini sürekli ayakta tutacak bir imperative code
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# DSC Öncesi Servis kontrolü aşağıdaki gibi yapılırdı. #Spooler servisinin nasıl olması gerektiği tanımlanır. Servis ismi ve status. Eğer böyle değilse if koşulu ile servis başlatılır. $myservice = get-service |Select-Object Name,Status | Where-Object {$_.Name -eq 'Spooler' -and $_.Status -eq 'Running'} if(!$myservice) { Start-Service -Name 'Spooler' Write-Host 'Spooler servisi durmuştu başlatıldı' } |
Aşağıda ise print spooler servisinin nasıl olması gerektiğini DSC ile şu şekilde belirtiyorum.
Service Spooler {
Name = ‘Spooler’
State = ‘Running’
}
Bunu DSC koduna tam olarak dökecek olup bir fonksiyona bağlarsam kodum aşağıdaki gibi olacak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Configuration Myservice { #Parameters Param([String[]]$ComputerName = "localhost") #target Node Node $ComputerName { Service Myservice { Name = 'Spooler' State = 'Running' } } } #Mof file generate edelim myservice -Computername Servislerim |
GET-DSCRESOURCE
Get-Dscresource komutu ile bilgisayar üzerindeki tüm dsc resourceleri görüntülenir.
Get-DscResource cmdlet’i, bilgisayarda bulunan Windows PowerShell Desired State Configuration (DSC) kaynaklarını alır. Bu cmdlet, yalnızca PSModulePath’te yüklü olan kaynakları keşfeder.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Get-DscResource Name ModuleName ImplementedAs ---- ---------- ------------- Archive PSDesiredStateConfiguration PowerShell Environment PSDesiredStateConfiguration PowerShell File Binary Group PSDesiredStateConfiguration PowerShell GroupSet PSDesiredStateConfiguration Composite Log PSDesiredStateConfiguration Binary Package PSDesiredStateConfiguration PowerShell PackageManagement PackageManagement PowerShell PackageManagementSource PackageManagement PowerShell ProcessSet PSDesiredStateConfiguration Composite Registry PSDesiredStateConfiguration PowerShell Script PSDesiredStateConfiguration PowerShell Service PSDesiredStateConfiguration PowerShell ServiceSet PSDesiredStateConfiguration Composite SignatureValidation Binary User PSDesiredStateConfiguration PowerShell WaitForAll PSDesiredStateConfiguration PowerShell WaitForAny PSDesiredStateConfiguration PowerShell WaitForSome PSDesiredStateConfiguration PowerShell WindowsFeature PSDesiredStateConfiguration PowerShell WindowsFeatureSet PSDesiredStateConfiguration Composite WindowsOptionalFeature PSDesiredStateConfiguration PowerShell WindowsOptionalFeatureSet PSDesiredStateConfiguration Composite WindowsPackageCab PSDesiredStateConfiguration PowerShell WindowsProcess PSDesiredStateConfiguration PowerShell |
Syntax to manage Services
Bir DSC konfigürasyonu altındaki ayarları görüntülemek için -syntax parametresini kullanırız.
Örneğin aşağıdaki komutla DSC service altında kullanabileceğimiz konfigürasyon detaylarını görebiliriz. Service yerine file derseniz file için kullanılacak konfigürasyonlar görüntülenir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Get-DscResource -Syntax -Name Service Service [String] #ResourceName { Name = [string] [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }] [Credential = [PSCredential]] [Dependencies = [string[]]] [DependsOn = [string[]]] [Description = [string]] [DisplayName = [string]] [Ensure = [string]{ Absent | Present }] [Path = [string]] [PsDscRunAsCredential = [PSCredential]] [StartupType = [string]{ Automatic | Disabled | Manual }] [State = [string]{ Running | Stopped }] } |
DSC Konfigürasyonunu kontrol etme
Aşağıdaki komut ile DSC konfigürasyonu success mi yoksa false durumda mı ve en son ne DSC dosyası kontrol edilmiş görebilirsiniz.
1 2 3 4 5 |
PS C:\Users\Administrator.ALIORTUL> Get-DscConfigurationStatus Status StartDate Type Mode RebootRequested NumberOfResources ------ --------- ---- ---- --------------- ----------------- Success 11.04.2022 20:09:44 Initial Push False 1 |
Yazının sonuna kadar okuduysanız Powershell DSC ile gerçekten ilgilisiniz demektir. Aşağıdaki yazımda Powershell DSC konfigürasyonunun nasıl yapıldığını bulabilirsiniz.
https://aliortul.azurewebsites.net/powershell-dsc-konfigurasyonu.html
2 thoughts on “Powershell DSC Nedir”
Bir yanıt yazın
Yorum yapabilmek için oturum açmalısınız.
[…] 2 sunucu üzerinde eş zamanlı olarak Web server ve IIS console featureslarını dağıtacağız. Powershell DSC Nedir bilmiyorsanız. Linke tıklayarak Powershell DSC nin ne olduğu hakkında bilgi […]
[…] DSC’nin nasıl çalıştığını ve çalışma yapısını anlamak için buradaki […]