استخدام بيانات التكوين في DSC
ينطبق على: Windows PowerShell 4.0، Windows PowerShell 5.0
باستخدام معلمة DSC ConfigurationData المضمنة، يمكنك تحديد البيانات التي يمكن استخدامها داخل التكوين. يسمح لك هذا بإنشاء تكوين واحد يمكن استخدامه لعقد متعددة أو لبيئات مختلفة. على سبيل المثال، إذا كنت تقوم بتطوير تطبيق، يمكنك استخدام تكوين واحد لكل من بيئات التطوير والإنتاج، واستخدام بيانات التكوين لتحديد البيانات لكل بيئة.
يصف هذا الموضوع بنية ConfigurationData hashtable. للحصول على أمثلة حول كيفية استخدام بيانات التكوين، راجع فصل بيانات التكوين والبيئة.
المعلمة ConfigurationData الشائعة
يأخذ تكوين DSC معلمة شائعة، ConfigurationData، تحددها عند تحويل التكوين برمجيا. للحصول على معلومات حول تجميع التكوينات، راجع تكوينات DSC.
المعلمة ConfigurationData هي تجزئة يجب أن تحتوي على مفتاح واحد على الأقل يسمى AllNodes. يمكن أن يحتوي أيضا على مفتاح واحد أو أكثر.
ملاحظة
تستخدم الأمثلة في هذا الموضوع مفتاحا إضافيا واحدا (بخلاف مفتاح AllNodes المسمى) المسمى NonNodeData
، ولكن يمكنك تضمين أي عدد من المفاتيح الإضافية، وتسمية كل ما تريده.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
قيمة مفتاح AllNodes هي صفيف. كل عنصر من عناصر هذا الصفيف هو أيضا جدول تجزئة يجب أن يحتوي على مفتاح واحد على الأقل يسمى NodeName:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
يمكنك إضافة مفاتيح أخرى إلى كل جدول تجزئة أيضا:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
لتطبيق خاصية على جميع العقد، يمكنك إنشاء عضو في صفيف AllNodes الذي يحتوي على NodeName من *
. على سبيل المثال، لمنح كل عقدة LogPath
خاصية، يمكنك القيام بذلك:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
هذا يعادل إضافة خاصية باسم LogPath
بقيمة "C:\Logs"
لكل كتلة من الكتل الأخرى (VM-1
و VM-2
و VM-3
).
تعريف ConfigurationData hashtable
يمكنك تعريف ConfigurationData إما كمتغير داخل نفس ملف البرنامج النصي كتكوين (كما في أمثلتنا السابقة) أو في ملف منفصل .psd1
. لتعريف ConfigurationData في .psd1
ملف، قم بإنشاء ملف يحتوي فقط على hashtable الذي يمثل بيانات التكوين.
على سبيل المثال، يمكنك إنشاء ملف باسم MyData.psd1
بالمحتويات التالية:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
تحويل التكوين برمجيا باستخدام بيانات التكوين
لتجميع تكوين قمت بتعريف بيانات التكوين له، يمكنك تمرير بيانات التكوين كقيمة للمعلمة ConfigurationData .
سيؤدي ذلك إلى إنشاء ملف MOF لكل إدخال في صفيف AllNodes . ستتم تسمية كل ملف MOF بخاصية NodeName
إدخال الصفيف المقابل.
على سبيل المثال، إذا قمت بتعريف بيانات التكوين كما هو الحال في MyData.psd1
الملف أعلاه، فإن التحويل البرمجي للتكوين سيؤدي إلى إنشاء كل من VM-1.mof
الملفات و VM-2.mof
.
تحويل التكوين برمجيا باستخدام بيانات التكوين باستخدام متغير
لاستخدام بيانات التكوين التي تم تعريفها كمتغير في نفس .ps1
ملف التكوين، يمكنك تمرير اسم المتغير كقيمة معلمة ConfigurationData عند تحويل التكوين برمجيا:
MyDscConfiguration -ConfigurationData $MyData
تحويل التكوين برمجيا باستخدام بيانات التكوين باستخدام ملف بيانات
لاستخدام بيانات التكوين المحددة في ملف .psd1، يمكنك تمرير مسار واسم هذا الملف كقيمة للمعلمة ConfigurationData عند تحويل التكوين برمجيا:
MyDscConfiguration -ConfigurationData .\MyData.psd1
استخدام متغيرات ConfigurationData في تكوين
يوفر DSC المتغيرات الخاصة التالية التي يمكن استخدامها في برنامج نصي للتكوين:
- يشير $AllNodes إلى المجموعة بأكملها من العقد المحددة في ConfigurationData. يمكنك تصفية مجموعة AllNodes باستخدام . Where() و . ForEach().
- تشير ConfigurationData إلى جدول التجزئة بأكمله الذي يتم تمريره كمعلمة عند تحويل التكوين برمجيا.
- يحتوي MyTypeName على اسم التكوين المستخدم فيه المتغير. على سبيل المثال، في التكوين
MyDscConfiguration
،$MyTypeName
سيكون لقيمةMyDscConfiguration
. - تشير العقدة إلى إدخال معين في مجموعة AllNodes بعد تصفيتها باستخدام . Where() أو . ForEach().
- يمكنك قراءة المزيد حول هذه الأساليب في about_arrays
استخدام بيانات غير عقدة
كما رأينا في الأمثلة السابقة، يمكن أن يحتوي ConfigurationData hashtable على مفتاح واحد أو أكثر بالإضافة إلى مفتاح AllNodes المطلوب. في الأمثلة الواردة في هذا الموضوع، استخدمنا عقدة إضافية واحدة فقط، وأسميناها NonNodeData
. ومع ذلك، يمكنك تحديد أي عدد من المفاتيح الإضافية، وتسمية أي شيء تريده.
للحصول على مثال لاستخدام بيانات غير عقدة، راجع فصل بيانات التكوين والبيئة.