Mühendisler için İstenen Durum Yapılandırmasına Genel Bakış
Bu belge, geliştirici ve operasyon ekiplerinin PowerShell'in (DSC) Desired State Configuration tasarlanmıştır. DSC'nin sağladığı değerin daha üst düzey bir görünümü için bkz. Desired State Configuration Genel Bakış
Desired State Configuration'nin avantajları
DSC şu şekildedir:
- Komut dosyası karmaşıklığını Windows
- Yineleme hızını artırma
"Sürekli dağıtım" kavramı giderek daha önemli hale geliyor. Sürekli dağıtım, sık sık ve günde birçok kez dağıtım yapma olanağı anlamına gelir. Bu dağıtımların amacı bir şeyi düzeltmek değil, bir şeyi hızla yayıma almaktır. Yeni özellikleri mümkün olduğunca sorunsuz ve güvenilir bir şekilde çalışır hale dönüştürerek yeni iş mantığının değer elde etmesini sağlarsınız.
Bulut bilişime doğru ilerler, bir son durum ortamının metin olarak bildirıldığı ve dağıtım altyapısında yayımıldığı "bildirimli" bir şablon modeli kullanan bir dağıtım çözümü anlamına gelir. Bu dağıtım tekniği büyük ölçekte hızlı bir değişime olanak sağlar ve hata tehdidine karşı daha fazla savunma sağlar çünkü herhangi bir zamanda dağıtım, son durumu garanti etmek için tutarlı bir şekilde tekrar edilebilir. Otomasyon aracılığıyla bu işlem stilini destekleyen araçlar ve hizmetler oluşturmak, bu değişikliklere yanıttır.
DSC, bildirime ve her zaman etkili (yinelenebilir) dağıtım, yapılandırma ve uyumluluk sağlayan bir platformdur. DSC platformu, veri merkezinizin bileşenlerinin doğru yapılandırmaya sahip olduğundan emin olmak için hataları önlemenizi ve yüksek maliyetli dağıtım hatalarını önlemenizi sağlar. DSC yapılandırmalarını uygulama kodunun bir parçası olarak ele alan DSC, sürekli dağıtıma olanak sağlar. DSC yapılandırması, uygulamanın bir parçası olarak güncelleştirilmiş olmalı ve uygulamayı dağıtmak için gereken bilginin her zaman güncel ve kullanılmaya hazır olmasını sağlar.
"PowerShell'im var, neden bu Desired State Configuration?"
DSC yapılandırmaları amacı veya yürütmeden "yapmak istediğim şeyi" veya "nasıl yapmak istiyorum". Bu, yürütme mantığının kaynaklar içinde yer alan anlamına gelir. Bu özellik için bir DSC kaynağı kullanılabilir olduğunda kullanıcıların bir özelliği nasıl uygulaydığını veya dağıtdığını bilmek zorunda değildir. Bu, kullanıcının kendi dağıtımının yapısına odaklanmalarına olanak sağlar.
Örneğin, PowerShell betikleri aşağıdaki gibi görünüyor olabilir:
# 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 basittir. Ancak, bu betiği üretime koymaya çalışmanız birkaç soruna neden olur. Bu betik arka arkaya iki kez çalıştır olursa ne olur? Bob daha önce paylaşıma Tam Erişime sahipse ne olur?
Bu sorunları telafi etmek için betiğin "gerçek" sürümü şuna daha yakından bakar:
# 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 daha karmaşıktır ve çok sayıda mantık ve hata işleme içerir. Betik daha karmaşıktır çünkü artık ne yapmak istediğini değil nasıl yapmak istediğini belirtesiniz.
DSC, ne yapmak istediğini söylemeni sağlar ve temel alınan mantık soyuttur.
# 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 betik temiz bir şekilde biçimlendirildi ve okunma kolay. Mantıksal yollar ve hata işleme, kaynak uygulamasında hala mevcuttur ancak betik yazarı tarafından görünmez.
Ortamı Yapıdan Ayırma
Dağıtımda yaygın DevOps, dağıtım için birden çok ortama sahip olmaktır. Örneğin, yeni kodun prototipini hızla yapmak için kullanılan bir "geliştirme" ortamı olabilir. "Geliştirme" ortamındaki kod, diğer kişilerin yeni işlevselliği doğrulaya bir "test" ortamına gider. Son olarak, kod "üretim" veya canlı site üretim ortamına gider.
DSC yapılandırmaları, yapılandırma verileri kullanarak bu dev-test üretim işlem hattına uyum sağlar.
Bu, yapılandırmanın yapısı arasındaki farkı yönetilen düğümlerden soyutlar. Örneğin, bir sunucu, IIS sunucusu ve SQL sunucu gerektiren bir yapılandırma tanımlayabilirsiniz. Bu yapılandırmanın farklı parçalarını hangi düğümler alırsa alsın, bu üç öğe her zaman mevcut olur. Yapılandırma verilerini kullanarak bir geliştirme ortamı için üç öğenin de aynı makineye işaret eder, üç öğeyi bir test ortamı için üç farklı makineye ayırabilirsiniz ve son olarak üretim ortamı için tüm üretim sunucularınıza doğru devam edersiniz. Farklı ortamlara dağıtmak için, Start-DscConfiguration hedeflemek istediğiniz ortam için doğru yapılandırma verileriyle çağırabilirsiniz.