استخدام بيانات التكوين في 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. ومع ذلك، يمكنك تحديد أي عدد من المفاتيح الإضافية، وتسمية أي شيء تريده.

للحصول على مثال لاستخدام بيانات غير عقدة، راجع فصل بيانات التكوين والبيئة.

راجع أيضاً