DSC v3.3.0: Yeni Windows Kaynakları ve –what-if Desteği
Microsoft Desired State Configuration (DSC) v3.3.0 genel kullanıma sunuldu. Sürümde üç yeni yerleşik Windows kaynağı, kayıt defteri tabanlı yeni bir adaptör, daha geniş --what-if kapsamı, deneysel export filtreleme, ifade fonksiyonlarında güncellemeler ve Linux için PMC üzerinden yayımlanan paketler var; eklemelerin ağırlığı Windows tarafında yapılandırma yazanlara dönük.
Yeni yerleşik Windows kaynakları
DSC v3.3, Microsoft.Windows ad alanına üç kaynak ekliyor ve üçü de kutudan çıktığı gibi geliyor:
- Microsoft.Windows/RegistryList, tek bir kaynak örneği içinde bir kayıt defteri girdisi dizisini yönetir. Önceden her anahtar veya değer için ayrı bir
Microsoft.Windows/Registryörneği tanımlamak gerekiyordu. Bunu desteklemek için alttakiregistry.exearacına--listanahtarı eklendi, kaynak sürümü 1.1’e taşındı ve registry manifestleri tek birregistry.dsc.manifests.jsondosyasında birleştirildi. - Microsoft.Windows/WindowsFeatureList, Windows özelliklerini yine aynı liste odaklı desenle yönetir.
- Microsoft.Windows/Personalization, vurgu rengi, açık/koyu mod ve saydamlık gibi Windows kişiselleştirme ayarlarını yönetir.
Kaynakları keşfetmek ve şemalarını incelemek için DSC CLI yeterli:
dsc resource list 'Microsoft.Windows/*'
dsc resource schema --resource Microsoft.Windows/Personalization
Microsoft.Windows.Adapter/Registry adaptörü
Sürümle birlikte gelen Microsoft.Windows.Adapter/Registry, kayıt defteri destekli bir adaptör. JSON özellik değerleri ile bunların kayıt defterindeki karşılıkları arasında dönüşüm yapan yardımcılar içeriyor; böylece bir kaynak istenen durumu sıradan JSON özellikleri olarak ifade ederken kayıt defterine okuma ve yazma işini adaptör üstleniyor.
Microsoft’un notuna göre dönüşüm yardımcıları şu an yalnızca Microsoft.Windows/Personalization için gereken türleri kapsıyor. Ekip, en baştan eksiksiz bir tür eşlemesi tahmin etmek yerine kapsamı bilinçli olarak dar tutmuş, yeni dönüşümler gerçek kullanım senaryoları ortaya çıktıkça eklenecek. Adaptörün karşılamadığı bir kayıt defteri türüne denk gelirseniz konu açmanız isteniyor.
dsc mcp komutu artık dsc server
dsc mcp komutu dsc server olarak yeniden adlandırıldı. Gerekçe, MCP istemcileri için kullanışlı olan uç noktaların entegrasyon araçları için de anlamlı olması ve üst seviye araçların yararlanabileceği temiz bir API sunulması. mcp adı geriye dönük uyumlu bir alias olarak korunuyor, yani mevcut istemci yapılandırmaları çalışmaya devam ediyor.
v3.3 ile bağlı istemcilere üç yeni araç açılıyor:
show_dsc_schema(), bir DSC kaynağı veya türü için JSON şemasını döndürür.invoke_dsc_function(), yerleşik bir DSC fonksiyonunu çağırır.invoke_dsc_expression(), bir DSC ifadesini değerlendirir.
Üçü birlikte kullanıldığında istemci hem bir kaynağın ne beklediğini inceleyebiliyor hem de yapılandırma ifadelerini CLI’ye düşmeden değerlendirebiliyor.
İfade fonksiyonlarında değişiklikler
format() fonksiyonu deneysel durumdan çıktı, kararlı hale geldi. Davranışı önizleme dönemindekiyle aynı, sadece deneysel uyarısı kalktı ve fonksiyon artık üretim yapılandırmalarında güvenle kullanılabiliyor.
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Echo formatted message
type: Microsoft.DSC.Debug/Echo
properties:
output: "[format('{0}/{1}', 'Microsoft.Windows', 'Personalization')]"
Yapılandırma belgesi içinde kaynak durumu üzerine akıl yürütmeyi sağlayan iki yeni kararlı fonksiyon da eklendi:
stateChanged(), mevcutsetişlemi sırasında bir kaynak örneğinin durum değiştirip değiştirmediğini döndürür. Girdi, yapılandırmadaki başka bir örneğin kaynak kimliği olmalıdır:stateChanged(resourceId('<resourceTypeName>', '<resourceInstanceName>')).restartRequired(), bir sistem, hizmet veya işlemin yeniden başlatma gerektirip gerektirmediğini döndürür. Kullanımlar:restartRequired('system'),restartRequired('service', '<serviceName>')verestartRequired('process', '<processName>').
Genişleyen –what-if kapsamı
--what-if, bir set işleminin sistemi değiştirmeden neyi değiştireceğini önizlemenizi sağlıyor. v3.3 ile üç alan daha bu desteğe kavuştu: Microsoft.Windows/Service, Microsoft.Windows/FirewallRuleList ve SSHD yapılandırma kaynakları.
# service.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Print Spooler
type: Microsoft.Windows/Service
properties:
name: Spooler
startType: Disabled
dsc config set --what-if --file./service.dsc.config.yaml
DSC uygulanacak durumu raporluyor, siz de değişikliği taahhüt etmeden önce gözden geçiriyorsunuz.
Firewall kurallarında unspecifiedRules kontrolü
Microsoft.Windows/FirewallRuleList kaynağına, yapılandırmada listelemediğiniz güvenlik duvarı kurallarına nasıl davranılacağını belirleyen unspecifiedRules özelliği eklendi. Üç alanı var:
action(zorunlu), kurallarınignore,disableveyaremoveedilmesini belirtir.direction(isteğe bağlı), eylemiInboundveyaOutboundkurallarla sınırlar. Yönden bağımsız olarak tüm belirtilmemiş kurallara uygulanması için bu alan atlanır.profiles(isteğe bağlı), eylemiDomain,Private,PublicveyaAllprofillerinden oluşan bir diziyle sınırlar.
# firewall.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Firewall rules
type: Microsoft.Windows/FirewallRuleList
properties:
rules: [] # Define no rules to apply to _all_ rules
unspecifiedRules:
action: disable
direction: Inbound
profiles: [Public]
Sentetik export filtreleme (deneysel)
Bu özellik v3.3’te deneysel, sözdizimi ileride değişebilir. 3.3.0 sürümünden itibaren DSC motoru, export işlemlerinde örnek filtrelemeyi doğrudan uygulamayan kaynaklar için sentetik export filtrelemeyi destekliyor. Kaynaklar, manifestlerinde export.supportsFiltering alanını false olarak tanımlayarak motorun filtrelemesine izin veriyor.
Akış şöyle işliyor: kullanıcı filtrelemek istediği bir veya daha fazla özelliği tanımlayan bir girdi örneği oluşturur, DSC export işlemini bu filtreleme özelliklerini kaynağa geçirmeden çağırır, kaynak örneklerin tam listesini döndürür, motor da tanımlanan özellikleri kullanarak dönen listeyi filtreler.
Bu sürümdeki sınırlar şöyle:
- Örnek için verilen girdi, her özelliği kaynak için geçerli bir özellik adı olan bir nesne olmalıdır.
- Her özelliğin değeri ya tam eşleşme için geçerli bir değer ya da en az bir joker karakter (
*) içeren, büyük/küçük harf duyarsız joker eşleşme yapan bir dize olmalıdır. - Özellik şemada
objectolarak tanımlıysa alt özellikler geçerli değer veya joker dize olarak verilebilir; DSC filtreyi iç içe katmanlara uygular, böylece derin alt özellikler de filtrelenebilir. - Özellik şemada
arrayolarak tanımlıysa birden fazla öğe belirtilebilir; bu durumda her öğe mantıksalORfiltresi olarak değerlendirilir. - Sürüm aralığı eşleştirme veya tamsayı özellikler için alt/üst sınır gibi daha karmaşık durumlar için yerleşik bir filtreleme davranışı yoktur.
# services.dsc.config.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
# Only exports services where the startup type begins with `auto` and the logon account inludes
# `local` in the account name
- name: Automatically starting local account services
type: Microsoft.Windows/Service
properties:
startType: Auto*
logonAccount: '*Local*'
# Only exports services that depend on `rpcss` or a service that starts with `w`
- name: Services depending on RpcSs or a service that starts with w
type: Microsoft.Windows/Service
properties:
dependencies:
- RpcSs
- w*
# Only exports services where the following are all true:
# - the startup type begins with `auto`
# - the logon account inludes `local` in the account name
# - the service depends on `rpcss` or a service that starts with `w`
- name: Combined service filter
type: Microsoft.Windows/Service
properties:
startType: Auto*
logonAccount: '*Local*'
dependencies:
- RpcSs
- w*
–version yerine –required-version
dsc resource * komutları artık --version yerine --required-version alıyor, eski bayrak geriye dönük uyumlu alias olarak korunuyor. --version belirli bir sürüm için tam eşleşme çağrıştırıyordu, oysa DSC bu parametreyi bir sürüm gereksinimi olarak ayrıştırıyor; adlandırma bu anlamsal netlik için değişti. ^1.1, ~1.2.3 ve >=1 gibi Rust benzeri semantik sürüm gereksinimleri belirtebilirsiniz.
dsc resource schema --resource Microsoft.Windows/RegistryList --required-version '^1.1.0'
Microsoft/OSInfo için sürüm karşılaştırma
Microsoft/OSInfo artık sürüm karşılaştırmayı destekliyor, yani bir yapılandırma işletim sistemi için tam değer eşleştirmek yerine sürüm kısıtı öne sürebiliyor. Version alanında bir karşılaştırma operatörünün ardından tam veya kısmi bir sürüm belirtebilirsiniz, örneğin >10.1. Kullanılabilir operatörler: eşittir (=, varsayılan ve operatör sonrası metin için tam eşleşme gerektirir), küçüktür (<), küçük eşittir (<=), büyüktür (>) ve büyük eşittir (>=).
Tek bir sürüm için yalnızca tek operatör kullanılabilir, aralık tanımlamak için operatörler birleştirilemez. Eşittir dışındaki operatörlerde kısmi sürüm belirtebilirsiniz: > 10 yazarsanız örnek, 10.0.1 ve 11.3.7 gibi sürümler için geçerli olur. Karşılaştırma, rakam dışı segment içeren sürümlerde de çalışıyor; ancak sürümün bir rakamla başlaması gerekiyor.
Linux paketleri PMC’de
DSC v3.3, Linux için hem RPM hem DEB paketi olarak packages.microsoft.com (PMC) üzerinde yayımlanıyor. Artık GitHub releases üzerinden tarball indirmek yerine dağıtımınızın paket yöneticisiyle kurulum ve güncelleme yapabilirsiniz.
Topluluk katkıları
Microsoft, bu sürümün büyük ölçüde topluluğa yaslandığını belirtiyor. @Gijsreyn (Gijs Reijn) bu döngünün öne çıkan katkıcısı: Microsoft.Windows/WindowsFeatureList, Microsoft.Windows/Service, Microsoft.Windows/FirewallRuleList ve SSHD yapılandırma kaynakları için --what-if desteği, deneysel export filtreleme, format() fonksiyonunun deneysel durumdan çıkarılması, fonksiyon listesi için kategori ve açıklama filtreleri ve önemli miktarda dokümantasyon çalışması ona ait.
@JohnMcPMS (WinGet ekibi), girdi verilmediğinde stdin’in alt süreçlere devralınması sorununa düzeltme kattı. @Alex-shearing dokümantasyon düzeltmeleri ve daha önce belgelenmemiş fonksiyonların dokümantasyonunu ekledi. @ThomasNieto (Thomas Nieto) ise depoya dev container desteği getirerek çalışan bir DSC derleme ortamı kurmayı kolaylaştırdı.
Ne yapmalı?
Kurulum adımları resmi belgelerde, sürümün tam değişiklik listesi GitHub release sayfasında. Başlamak için yeni Windows kaynaklarını deneyin ve bir yapılandırmayı uygulamadan önce --what-if ile çalıştırın. Kayıt defteri adaptörünün tür dönüşümlerinde eksik bulursanız veya deneysel export filtreleme hakkında geri bildiriminiz varsa DSC deposunda konu açmanız isteniyor.
Kaynaklar ve İleri Okuma
- Announcing Microsoft Desired State Configuration v3.3.0 — Jason Helmick, PowerShell Team Blog
- DSC v3 kurulum dokümantasyonu (Microsoft Learn)
- DSC GitHub release sayfası (tam değişiklik listesi)
- PowerShell/DSC deposu
- Get Started with DSC v3
- Enhanced Authoring with DSC v3
- DSC v3.2.0 duyurusu
- DSC v3.1.0 duyurusu
- DSC v3.0.0 duyurusu







Yorum gönder