Komut tabanlı DSC Kaynağının Anatomisi
DSC Kaynakları, bir sistemin ayarlarını yönetmek için standartlaştırılmış bir arabirim sağlar. Kaynak, yönetebileceğiniz özellikleri tanımlar ve kaynağın bir örneğini almak için gereken kodu uygular.
Komut tabanlı DSC Kaynakları en az iki dosyayla tanımlanır:
- DSC'ye kaynakla nasıl etkileşim kuracağını bildiren bir DSC Kaynak bildirimi.
- Kaynağın örneklerini yönetmek için bir veya daha fazla yürütülebilir dosya ve bunların bağımlılıkları.
DSC Kaynak bildirimleri
DSC Kaynak bildirimleri JSON dosyaları olarak tanımlanır. DSC'nin bir JSON dosyasını bildirim olarak tanıması için dosyanın aşağıdaki ölçütleri karşılaması gerekir:
- Dosyanın ortam değişkeninde
PATH
bulunabilir olması gerekir. - Dosya adı ile
.dsc.resource.json
bitmelidir.
DSC, kullanılabilir komut tabanlı DSC Kaynakları için yerel sistemde arama yaparken, içindeki her klasörde PATH
DSC Kaynak bildirimi adlandırma kuralını kullanan dosyaları arar. Ardından DSC, bulunan bu dosyaların her birini ayrıştırır ve DSC Kaynak Bildirimi JSON şemasına göre doğrular.
JSON dosyası şemada doğrulanırsa, DSC DSC Kaynağını kullanabilir.
Bildirimin en azından şunları tanımlaması gerekir:
- DSC Kaynak Bildirimi JSON şemasının uyumlu sürümü.
- Kaynağın tam adı, örneğin
Microsoft.Windows/Registry
. Tam ad söz dizimi şeklindedir<owner>[.<group>][.<area>]/<name>
. Tam adın grup ve alan bileşenleri, kaynakların ad alanlarında düzenlenmesini sağlar. - DSC'nin bir kaynak örneğinin geçerli durumunu almak için komutunu nasıl çağırabileceği.
- Örneği doğrulamanın bir yolu. Bu, aşağıdakilerden biri olabilir:
- Örneği açıklayan bir JSON şeması
- Çalışma zamanında şemayı almak için DSC'nin çağırması gereken bir komut
- İç içe DSC Kaynaklarını doğrulamak için bir komut. Bu son seçenek yalnızca DSC Grup Kaynakları ve DSC Sağlayıcı Kaynakları için geçerlidir.
Bildirim isteğe bağlı olarak aşağıdakileri tanımlayabilir:
- DSC'nin bir örneğin istenen durumda olup olmadığını test etmek için komutunu nasıl çağırabileceği.
- DSC'nin bir örneği istenen duruma ayarlamak için komutunu nasıl çağırabileceği.
- komutu tarafından döndürülen sıfır olmayan çıkış kodlarının anlamı.
- Kaynak bir DSC Grup Kaynağı veya DSC Sağlayıcı Kaynağı olduğunda DSC'nin diğer DSC Kaynaklarını yönetmek için komutunu nasıl çağırabileceği.
- Kaynağın yazarı ve kısa bir açıklaması gibi kaynak hakkındaki meta veriler.
Bildirim, kaynağın bir örneğinin nasıl test edeceğini tanımlamıyorsa, DSC kaynak örnekleri için yapay bir test gerçekleştirir. DSC'nin yapay testi her zaman bir örneğin gerçek durumunu alır ve örneğin özelliklerinin istenen durumla sıkı bir büyük/küçük harfe duyarlı karşılaştırmasını yapar. Yapay test, ön ekinde alt çizgi () veya dolar işareti (_
$
) bulunan özellikleri yoksayar. Özelliklerden herhangi biri tanımlanan istenen durumla tam olarak aynı değilse, DSC örneği uyumsuz olarak bildirir.
Bildirim DSC Kaynağının bir örneğinin nasıl ayarlandığını tanımlamıyorsa, DSC istenen durumu zorlamak için kaynağı kullanamaz.
Bildirimin her işlem için aynı yürütülebilir dosyayı belirtmesi gerekmez. Her işlemin tanımı bağımsızdır.
DSC Kaynağı yürütülebilir dosyaları
Komut tabanlı DSC Kaynakları, DSC'nin çalışması için her zaman yürütülebilir bir dosya gerektirir. DSC Kaynak Bildirimi'nin yürütülebilir dosyayla birlikte paketlenmiş olması gerekmez. Yürütülebilir dosya, ikili uygulama veya kabuk betiği gibi herhangi bir yürütülebilir dosya olabilir. Kaynak, farklı işlemler için farklı yürütülebilir dosyalar kullanabilir.
DSC'nin bir yürütülebilir dosya kullanması için ortam değişkeninde PATH
bulunabilir olması gerekir. DSC, komutun başarılı olup olmadığını belirlemek için yürütülebilir dosya tarafından döndürülen çıkış kodunu kullanarak yürütülebilir dosyayı işlem başına bir kez çağırır. DSC çıkış kodunu 0
başarılı, diğer tüm çıkış kodlarını ise hata olarak ele alır.
Girişler
DSC, komut tabanlı DSC Kaynaklarına girişi stdin üzerinden JSON veri blobu olarak veya bağımsız değişken bayrakları ve değerleri kümesi olarak gönderir. Giriş işleme, DSC Kaynak Bildirimi'nde işlem başına tanımlanır.
DSC girişi stdin üzerinden JSON olarak gönderdiğinde, veri blobu bir örneğin istenen durumunun JSON gösterimidir. Bu, kaynağın iç içe nesnelerle karmaşık özellikleri desteklemesini sağladığından kaynak için en güçlü seçenektir.
DSC girişi bağımsız değişken olarak gönderdiğinde, belirtilen özelliklerin her biri için bir çift bağımsız değişken oluşturur. İlk bağımsız değişken, gibi --duration
ön ekli --
özelliğin adıdır. İkinci bağımsız değişken özelliğin değeridir. Bağımsız değişken çiftlerinin sıralanması garanti değildir. Bu giriş yöntemi karmaşık özellikleri desteklemez.
Çıkışlar
Komut tabanlı bir DSC Kaynağının yürütülebilir dosyası, DSC tarafından çağrıldığında JSON verilerini stdout'a döndürmelidir. Çıkış kodlaması UTF-8 olmalıdır. Kaynak bir örneğin durumunu döndürdüğünde, DSC JSON verilerini kaynağın örnek şemasına göre doğrular.
DSC Sağlayıcı Kaynakları için DSC, yürütülebilir dosyanın yönettiği kaynakların örnek durumlarından tek bir JSON dizisi veya bir dizi JSON Satırı olarak geçmesini bekler.
Komut tabanlı DSC Kaynakları, stderr'a JSON Çizgileri sunarak günlük bilgilerini DSC'ye bildirebilir. Her günlük girdisi, iki anahtar içeren bir JSON nesnesi olmalıdır:
- anahtarı,
message
günlük girdisi için insan tarafından okunabilir dizeyi tanımlar. - anahtar,
level
iletinin birError
,Warning
veyaInformation
öğesini temsil edip etmediğini tanımlar.
DSC, kaynaklardan gelen iletileri toplar ve bunları yapılandırma işleminin sonuçlarında görüntüler. DSC bir kaynağı doğrudan yapılandırmanın dışında çağırdığında iletileri toplamaz. Bunun yerine, bunlar yalnızca stderr'a gönderilir.