ترجمة برمجية لتكوينات الحالة المطلوبة في تكوين حالة الأتمتة من Azure

إشعار

قبل تمكين Automation State Configuration، نود أن تعرف أن إصدارا أحدث من DSC متاح الآن بشكل عام، تتم إدارته بواسطة ميزة Azure Policy المسماة تكوين الضيف. تجمع خدمة تكوين الضيف ميزات ملحق DSC وAzure Automation State Configuration والميزات الأكثر شيوعاً المطلوبة من ملاحظات العملاء. يتضمن تكوين الضيف أيضاً دعم الجهاز المختلط من خلال الخوادم الممكنة بواسطة Arc.

يمكنك ترجمة برمجية لتكوينات الحالة المطلوبة (DSC) في تكوين حالة الأتمتة من Azure بالطرق التالية:

  • خدمة الترجمة البرمجية لتكوين حالة Azure

    • أسلوب المبتدئين مع واجهة مستخدم تفاعلية
    • تتبع حالة الوظيفة بسهولة
  • Windows PowerShell

    • الاتصال من Windows PowerShell على محطة العمل المحلية أو خدمة البناء
    • التكامل مع البنية الأساسية لبرنامج ربط العمليات التجارية لإختبار التطوير
    • توفير قيم المعلمات المعقدة
    • العمل مع بيانات العقدة وبيانات غير العقدة على نطاق واسع
    • تحسن ملحوظ في الأداء

يمكنك أيضًا استخدام قوالب إدارة الموارد من Azure مع ملحق تكوين الحالة المطلوبة (DSC) من Azure لدفع التكوينات إلى VMs من Azure. يستخدم ملحق تكوين الحالة المطلوبة من Azure إطار عمل عامل VM Azure لتسليم تكوينات الحالة المطلوبة التي تعمل على Azure VMs، وسنها، وإعداد تقرير عنها. للحصول على تفاصيل الترجمة البرمجية باستخدام قوالب إدارة موارد Azure، راجع ملحق تكوين الحالة المطلوبة مع قوالب إدارة الموارد من Azure.

ترجمة برمجية لتكوين الحالة المطلوبة في تكوين حالة Azure

المدخل

  1. في حسابك التلقائي، انقر فوق تكوين الحالة المطلوبة (DSC).
  2. انقر فوق علامة التبويب تكوينات، ثم انقر فوق اسم التكوين للترجمة البرمجية.
  3. انقر فوق ترجمة برمجية.
  4. إذا لم يكن للتكوين معلمات، تتم مطالبتك بتأكيد ما إذا كنت تريد ترجمته برمجيًا. إذا كان التكوين يحتوي على معلمات، تفتح شفرة تكوين الترجمة البرمجية بحيث يمكنك توفير قيم المعلمات.
  5. يتم فتح صفحة "مهمة الترجمة البرمجية" بحيث يمكنك تعقب حالة وظيفة الترجمة البرمجية. يمكنك أيضًا استخدام هذه الصفحة لتعقب تكوينات العقدة (مستندات تكوين MOF) الموضوعة على خادم سحب تكوين حالة الأتمتة من Azure.

Azure PowerShell

يمكنك استخدام بدء AzAutomationDscCompilationJob لبدء الترجمة البرمجية مع Windows PowerShell. تبدأ عينة الرمز التالي الترجمة البرمجية لتكوين الحالة المطلوبة الذي يسمى SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob إرجاع كائن مهمة الترجمة البرمجية التي يمكنك استخدامها لتعقب حالة المهمة. يمكنك بعد ذلك استخدام كائن مهمة الترجمة البرمجية هذه مع Get-AzAutomationDscCompilationJob لتحديد حالة مهمة الترجمة البرمجيةوالحصول على AzAutomationDscCompilationJobOutput لعرض تدفقاته (الإخراج). العينة التالية تبدأ الترجمة البرمجية لتكوين SampleConfig وينتظر حتى يتم إكماله ثم يعرض دفقاته.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

أعلن المعلمات الأساسية

إعلان المعلمة في تكوينات الحالة المطلوبة، بما في ذلك أنواع المعلمات والخصائص، يعمل بنفس الطريقة كما في كتب تشغيل أتمتة Azure. راجع بدء تشغيل دفتر تشغيل في أتمتة Azure لمعرفة المزيد حول معلمات دفتر التشغيل.

يستخدم المثال التالي FeatureNameIsPresent والمعلمات لتحديد قيم الخصائص في تكوين عقدة ParametersExample.sample، التي تم إنشاؤها أثناء الترجمة البرمجية.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

يمكنك الترجمة البرمجية لتكوينات الحالة المطلوبة التي تستخدم المعلمات الأساسية في مدخل تكوين حالة الأتمتة من Azure أو مع Azure PowerShell.

المدخل

في المدخل، يمكنك إدخال قيم المعلمات بعد النقر فوق ترجمة برمجية.

Configuration compile parameters

Azure PowerShell

PowerShell يتطلب معلمات في hashtable، حيث يطابق المفتاح اسم المعلمة والقيمة تساوي قيمة المعلمة.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

للحصول على معلومات حول تمرير PSCredential الكائنات كمعلمات، راجع أصول بيانات الاعتماد.

الترجمة البرمجية للتكوينات التي تحتوي على موارد مركبة في أتمتة Azure

تسمح لك ميزة الموارد المركبة باستخدام تكوينات الحالة المطلوبة كموارد متداخلة داخل تكوين. تمكن هذه الميزة تطبيق التكوينات المتعددة لمورد واحد. راجع الموارد المركبة: استخدام تكوين الحالة المطلوبة كمورد لمعرفة المزيد حول الموارد المركبة.

إشعار

بحيث أن التكوينات التي تحتوي على الموارد المركبة تقوم بالترجمة البرمجية بشكل صحيح، يجب أولًا الاستيراد إلى أتمتة Azure أي موارد تكوين للحالة المطلوبة التي تعتمد عليها المركبات. إضافة مورد مركب تكوين الحالة المطلوبة لا يختلف عن إضافة أي نموذج PowerShell إلى أتمتة Azure. تم توثيق هذه العملية في إدارة النماذج في أتمتة Azure.

إدارة ConfigurationData عند الترجمة البرمجية للتكوينات في أتمتة Azure

ConfigurationData هي معلمة تكوين الحالة المطلوبة مضمنة تسمح لك بفصل التكوين الهيكلي عن أي تكوين خاص بالبيئة أثناء استخدام PowerShell لتكوين الحالة المطلوبة. لمزيدٍ من المعلومات، راجع فصل "ماذا" عن "أين" في PowerShell لتكوين الحالة المطلوبة.

إشعار

عند الترجمة البرمجية في تكوين حالة أتمتة Azure، يمكنك استخدام ConfigurationData في Azure PowerShell ولكن ليس في المدخل Azure.

يستخدم تكوين الحالة المطلوبة المثال التالي ConfigurationData عبر $ConfigurationDataو$AllNodes الكلمات الأساسية. تحتاج أيضًا إلى نموذج xWebAdministration لهذا المثال.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

يمكنك الترجمة البرمجية لتكوين الحالة المطلوبة السابق مع Windows PowerShell. البرنامج النصي التالي يضيف تكوينات عقدتين إلى خدمة سحب تكوين حالة الأتمتة من Azure: ConfigurationDataSample.MyVM1 و ConfigurationDataSample.MyVM3.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

العمل مع الأصول في أتمتة Azure أثناء الترجمة البرمجية

مراجع الأصول هي نفسها في تكوين حالة الأتمتة من Azure وrunbooks. لمزيد من المعلومات، راجع ما يلي:

أصول بيانات الاعتماد

يمكن لتكوينات الحالة المطلوبة في أتمتة Azure الرجوع إلى أصول بيانات اعتماد الأتمتة باستخدام Get-AutomationPSCredential cmdlet. إذا كان للتكوين معلمة تحدد PSCredential كائن، استخدم Get-AutomationPSCredential عن طريق تمرير اسم السلسلة من أصل بيانات اعتماد أتمتة Azure إلى cmdlet لاسترداد بيانات الاعتماد. ثم استخدم هذا الكائن للمعلمة التي تتطلب PSCredential الكائن. خلف الكواليس، يتم استرداد أصل بيانات اعتماد أتمتة Azure بهذا الاسم وتمريره إلى التكوين. يوضح المثال أدناه هذا السيناريو في العمل.

يتطلب حفظ بيانات الاعتماد آمنة في تكوينات العقدة (مستندات تكوين MOF) تشفير بيانات الاعتماد في ملف MOF لتكوين العقدة. حاليًا يجب أن تعطي PowerShell لتكوين الحالة المطلوبة الإذن لإخراج بيانات الاعتماد في نص عادي أثناء إنشاء MOF بتكوين العقدة. PowerShell تكوين الحالة المطلوبة غير مدرك أن أتمتة Azure تشفر ملف MOF بأكمله بعد إنشائه من خلال مهمة ترجمة برمجية.

يمكنك إخبار PowerShell لتكوين الحالة المطلوبة أنه لا بأس من إخراج بيانات الاعتماد في نص عادي في تكوين العقدة الذي تم إنشاؤه، MOFs باستخدام بيانات التكوين. ينبغي أن تمر PSDscAllowPlainTextPassword = $true عبر ConfigurationData لكل اسم كتلة عقدة التي تظهر في تكوين الحالة المطلوبة ويستخدم بيانات الاعتماد.

يظهر المثال التالي تكوين الحالة المطلوبة الذي يستخدم أصل بيانات اعتماد الأتمتة.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

يمكنك الترجمة البرمجية لتكوين الحالة المطلوبة السابق مع PowerShell. الرمز من PowerShell التالي تضيف تكوينين لعقدتين إلى خادم سحب حالة الأتمتة من Azure: CredentialSample.MyVM1 وCredentialSample.MyVM2.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

إشعار

عند اكتمال الترجمة البرمجية، قد تتلقى رسالة الخطأ The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. يمكنك تجاهل هذه الرسالة بأمان.

الترجمة البرمجية لتكوين الحالة المطلوبة في Windows PowerShell

تُضمن عملية الترجمة البرمجية لتكوينات الحالة المطلوبة في Windows PowerShell في وثائق PowerShell لتكوين الحالة المطلوبة الكتابة والترجمة البرمجية وتطبيق تكوين. يمكنك تنفيذ هذه العملية من محطة عمل مطور أو ضمن خدمة بناء، مثل Azure DevOps. يمكنك عندئذٍ استيراد ملفات MOF التي تم إنتاجها بواسطة الترجمة البرمجية للتكوين إلى خدمة تكوين حالة Azure.

كما تُوفر الترجمة البرمجية في Windows PowerShell خيار توقيع محتوى التكوين. يتحقق عامل تكوين الحالة المطلوبة من تكوين عقدة موقعة محليًا على عقدة مدارة. يضمن التحقق أن التكوين المطبق على العقدة يأتي من مصدر معتمد.

يمكنك أيضًا استيراد تكوينات العقدة (ملفات MOF) التي تم رجمتها برمجيا خارج Azure. يتضمن الاستيراد الترجمة البرمجية من محطة عمل مطور أو في خدمة مثل Azure DevOps. هذا النهج له مزايا متعددة، بما في ذلك الأداء والموثوقية.

إشعار

يجب ألا يزيد حجم ملف تكوين العقدة عن 1 ميغابايت للسماح لأتمتة Azure باستيراده.

لمزيدٍ من المعلومات حول توقيع تكوينات العقدة، راجع التحسينات في WMF 5.1 - كيفية توقيع التكوين والنموذج.

استورد تكوين عقدة في مدخل Azure

  1. في صفحة حساب الأتمتة، حدد تكوين الحالة (DSC) تحتإدارة التكوين.

  2. في صفحة تكوين الحالة (DSC)، انقر فوق علامة التبويب تكوينات ثم انقر فوق إضافة.

  3. في صفحة الاستيراد، انقر فوق رمز المجلد بجوار الحقل ملف تكوين العقدة لتصفح ملف MOF لتكوين عقدة على الكمبيوتر المحلي.

    Browse for local file

  4. أدخل اسمًا في حقل اسم التكوين. يجب أن يتطابق هذا الاسم مع اسم التكوين الذي تمت الترجمة البرمجية لتكوين العقدة منه.

  5. وانقر فوق موافق.

استورد تكوين عقدة باستخدام Azure PowerShell

يمكنك استخدام cmdlet Import-AzAutomationDscNodeConfiguration لاستيراد تكوين عقدة في حسابك للأتمتة.

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

الخطوات التالية