Mühendisler için İstenen Durum Yapılandırmasına Genel Bakış
Bu belge, PowerShell Istenen durum yapılandırması 'nın (DSC) avantajlarını anlamak için geliştirici ve operasyon ekiplerine yöneliktir. DSC 'nin sağladığı daha yüksek düzey bir görünüm için lütfen bkz. karar mekanizmaları Için Istenen durum yapılandırmasına genel bakış
Istenen durum yapılandırmasının avantajları
DSC şu şekilde bulunur:
- Windows 'da komut dosyasının karmaşıklığını azaltma
- Yineleme hızını artırın
"Sürekli dağıtım" kavramı daha önemli hale geliyor. Sürekli dağıtım, günde çok büyük olasılıkla dağıtımı yapabilme yeteneği anlamına gelir. Bu dağıtımların amacı bir şeyi düzelmez, ancak hızla yayımlanmış bir şey alabilir. Geliştirme sürecinde, mümkün olduğunca sorunsuz ve güvenilir bir şekilde yeni özellikler alarak, yeni iş mantığının değerini azaltabilirsiniz.
Bulut bilgi işlem 'e geçiş, bir bitiş durumu ortamının metin olarak bildirildiği ve bir dağıtım altyapısına yayımlandığı bir "bildirim temelli" şablon modeli kullanan bir dağıtım çözümüdür. Bu dağıtım tekniği, bir son durumu güvence altına almak için dağıtımın her zaman tutarlı bir şekilde tekrarlanabilir olması nedeniyle, ölçek açısından esnekliği ile hızlı değişikliğe izin verir. Bu işlem stilini Otomasyon aracılığıyla destekleyen araç ve hizmetlerin oluşturulması, bu değişikliklere yanıt olarak gönderilir.
DSC, bildirim temelli ve ıdempotent (yinelenebilir) dağıtım, yapılandırma ve uygunluk sağlayan bir platformdur. DSC platformu, veri merkezinizdeki bileşenlerin hataları önleyip maliyetli dağıtım başarısızlıklarını önleyen doğru yapılandırmaya sahip olmasını sağlamanıza olanak sağlar. DSC yapılandırmalarına uygulama kodunun bir parçası olarak davranarak DSC sürekli dağıtıma izin vermez. DSC yapılandırması uygulamanın bir parçası olarak güncellenmelidir, böylelikle uygulamayı dağıtmak için gereken bilgi her zaman güncel ve kullanılabilir hale gelir.
"PowerShell kullanıyorum, neden Istenen durum yapılandırmasına ihtiyacım var?"
DSC yapılandırmalarına yönelik amaç veya "ne yapmak istiyorum", yürütme veya "nasıl yapılır?" Bu, yürütme mantığının kaynaklar içinde bulunduğu anlamına gelir. Kullanıcılar, bu özellik için bir DSC kaynağı kullanılabilir olduğunda bir özelliği uygulamayı veya dağıtmayı bilmek zorunda değildir. Bu, kullanıcının dağıtımının yapısına odaklanılmasını sağlar.
Örnek olarak, PowerShell betikleri şöyle görünmelidir:
# Create a share in Windows Server 8 New-SmbShare -Name MyShare -Path C:\Demo\Temp -FullAccess Alice -ReadAccess Bob
Bu betik basit, anlaşılır ve kolay bir işlemdir. Ancak, bu betiği üretime koymaya çalışırsanız, birkaç sorunla karşılaşacaktır. Bu komut dosyası bir satırda iki kez çalıştırıldığında ne olur? Emre daha önce paylaşıma tam erişim içeriyorsa ne olur?
Bu sorunları dengelemek için betiğin "gerçek" sürümü şöyle görünecektir:
# But actually creating a share in an idempotent way would be $shareExists = $false $smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue if($smbShare -ne $null) { Write-Verbose -Message "Share with name $Name exists" $shareExists = $true } if ($shareExists -eq $false) { Write-Verbose "Creating share $Name to ensure it is Present" New-SmbShare @PSBoundParameters } else { # Need to call either Set-SmbShare or *ShareAccess cmdlets if ($PSBoundParameters.ContainsKey("ChangeAccess")) { #...etc, etc, etc } }
Bu betik, çok sayıda mantık ve hata işlemesi sayesinde daha karmaşıktır. Ne yapmak istediğinizi, ancak nasıl yapılacağını artık belirttiğinizden, betik daha karmaşıktır.
DSC, ne yapmak istediğinizi söylemeniz ve temel alınan mantığın soyutlanmasıdır.
# A configuration is a special kind of PowerShell function Configuration Sample_Share { Import-DscResource -Module xSmbShare # Nodes are the endpoint we wish to configure # A Configuration block can have zero or more Node blocks Node $NodeName { # Next, specify one or more resource blocks # Resources are simply PowerShell modules that # implement the logic of "how" to execute a task xSmbShare MySMBShare { Ensure = "Present" Name = "MyShare" Path = "C:\Demo\Temp" ReadAccess = "Bob" FullAccess = "Alice" Description = "This is an updated description for this share" } } } #Run the function to compile the configuration Sample_Share #Pass the configuration to the nodes we defined and configure them Start-DscConfiguration Sample_Share
Bu komut dosyası düzgün biçimlendirilmemiştir ve okunabilir bir işlemdir. Mantıksal yollar ve hata işleme hala kaynak uygulamasında mevcuttur, ancak betik yazarı görünmez.
Ortamı yapıyla ayırma
DevOps 'daki ortak bir düzende dağıtım için birden çok ortam vardır. Örneğin, yeni kodu hızlı bir şekilde prototip için kullanılan bir "dev" ortamı olabilir. "Geliştirme" ortamındaki kod "test" ortamına gider, burada diğer kişiler yeni işlevselliği doğrular. Son olarak, kod "üretim" veya canlı site üretim ortamına gider.
DSC yapılandırmaları, yapılandırma verilerikullanılarak bu geliştirme ve test üretim ardışık düzenine uyum sağlayacak.
Bu, yapılandırmanın yapısı ile yönetilen düğümlerin arasındaki farkı daha fazla soyutlar. Örneğin, bir SQL Server, bir IIS sunucusu ve bir orta katman sunucu gerektiren bir yapılandırma tanımlayabilirsiniz. Hangi düğümlerin bu yapılandırmanın farklı parçalarını aldığına bakılmaksızın, bu üç öğe her zaman mevcut olacaktır. Yapılandırma verilerini, geliştirme ortamı için aynı makineye her üç öğeyi de işaret etmek üzere kullanabilirsiniz, üç öğeyi bir test ortamı için üç farklı makineye ayırır ve son olarak üretim ortamı için tüm üretim sunucularınızın tamamına doğru. Farklı ortamlara dağıtmak için
Start-DscConfiguration hedeflemek istediğiniz ortam için doğru yapılandırma verileriyle çağırabilirsiniz.