Mühendisler için İstenen Durum Yapılandırmasına Genel Bakış

Bu belge, geliştirici ve operasyon ekiplerinin PowerShell Desired State Configuration (DSC) avantajlarını anlamasına yöneliktir. DSC'nin sağladığı değerin daha üst düzey bir görünümü için bkz. Karar Alıcılar için Desired State Configuration Genel Bakış

Desired State Configuration avantajları

DSC şu şekildedir:

  • Windows'da betik oluşturmanın karmaşıklığını azaltma
  • Yineleme hızını artırma

"Sürekli dağıtım" kavramı daha önemli hale geliyor. Sürekli dağıtım, sık sık ve potansiyel olarak günde birçok kez dağıtım yapabilme anlamına gelir. Bu dağıtımların amacı bir şeyi düzeltmek değil, bir şeyin hızla yayımlanmasını sağlamaktır. Geliştirme yoluyla yeni özellikleri mümkün olduğunca sorunsuz ve güvenilir bir şekilde çalışır hale getirerek, yeni iş mantığının değer elde etme süresini kısaltırsınız.

Bulut bilişime geçiş, son durum ortamının metin olarak bildirildiği ve dağıtım altyapısında yayımlandığı "bildirim temelli" şablon modelini kullanan bir dağıtım çözümü anlamına gelir. Bu dağıtım tekniği, hata tehdidine karşı dayanıklılıkla büyük ölçekte hızlı değişime olanak tanır, çünkü dağıtım her zaman bir son durumu garanti etmek için tutarlı bir şekilde tekrarlanabilir. Otomasyon aracılığıyla bu işlem stilini destekleyen araç ve hizmetlerin oluşturulması, bu değişikliklere bir yanıttır.

DSC bildirim temelli ve bir kez 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 olmanıza olanak tanır; bu da hataları önler ve yüksek maliyetli dağıtım hatalarını önler. DSC yapılandırmalarını uygulama kodunun bir parçası olarak ele alarak DSC sürekli dağıtımı etkinleştirir. DSC yapılandırması, uygulamanın bir parçası olarak güncelleştirilerek uygulamayı dağıtmak için gereken bilginin her zaman güncel ve kullanıma hazır olduğundan emin olunmalıdır.

"PowerShell'im var, neden Desired State Configuration ihtiyacım var?"

DSC yapılandırmaları amacı veya "yapmak istediklerim"i yürütmeden veya "bunu nasıl yapmak istediğimden" ayırır. Bu, yürütme mantığının kaynakların içinde yer aldığı anlamına gelir. Bu özellik için bir DSC kaynağı kullanılabilir olduğunda kullanıcıların bir özelliği nasıl uygulayacağını veya dağıtacağını bilmesi gerekmez. Bu, kullanıcının dağıtım yapısına odaklanması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 basittir. Ancak, bu betiği üretime yerleştirmeyi denerseniz çeşitli sorunlarla karşılaşırsınız. Bu betik bir satırda iki kez çalıştırılırsa ne olur? Bob daha önce paylaşıma Tam Erişime sahipse ne olur?

Bu sorunları telafi etmek için betiğin "gerçek" bir sürümü aşağıdaki gibi bir şeye daha yakın görünür:

# 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şleme özelliğiyle daha karmaşıktır. Betik daha karmaşıktır çünkü artık ne yapmak istediğinizi değil nasıl yapılacağını belirtmiş olursunuz.

DSC, ne yapmak istediğinizi söylemenize olanak tanır ve temel alınan mantık soyutlanır.

# A configuration is a special kind of PowerShell function
Configuration Sample_Share
{
   Import-DSCResource -ModuleName 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 biçimlendirilmiş ve okunmaya açık. Mantıksal yollar ve hata işleme hala kaynak uygulamasında bulunur, ancak betik yazarı tarafından görünmez.

Ortamı Yapıdan Ayırma

DevOps'ta yaygın olarak kullanılan bir desen, dağıtım için birden çok ortamın olmasıdır. Örneğin, hızlı bir şekilde yeni kod prototipi oluşturmak için kullanılan bir "geliştirme" ortamı olabilir. "Geliştirme" ortamındaki kod, diğer kişilerin yeni işlevselliği doğruladığı bir "test" ortamına gider. Son olarak, kod "prod" veya canlı site üretim ortamına gider.

DSC yapılandırmaları, yapılandırma verilerinin kullanımı aracılığıyla bu geliştirme-test üretim işlem hattını barındırmaktadır. Bu, yönetilen düğümlerden yapılandırma yapısı arasındaki farkı daha da soyutlar. Örneğin, SQL sunucusu, IIS sunucusu ve orta katman sunucusu gerektiren bir yapılandırma tanımlayabilirsiniz. Bu yapılandırmanın farklı parçalarını hangi düğümlerin aldığına bakılmaksızın, bu üç öğe her zaman mevcut olacaktır. Yapılandırma verilerini bir geliştirme ortamı için üç öğeyi de aynı makineye yönlendirmek, üç öğeyi test ortamı için üç farklı makineye ayırmak ve son olarak üretim ortamı için tüm üretim sunucularınıza yönlendirmek için kullanabilirsiniz. Farklı ortamlara dağıtmak için, hedeflemek istediğiniz ortam için doğru yapılandırma verileriyle çağırabilirsiniz Start-DscConfiguration .

Ayrıca Bkz.

Yapılandırmalar

Yapılandırma verileri

Kaynaklar