ترجمة برمجية لتكوينات الحالة المطلوبة في تكوين حالة الأتمتة من Azure
إشعار
سيتم إيقاف Azure Automation State Configuration في 30 سبتمبر 2027، يرجى الانتقال إلى Azure Machine Configuration بحلول ذلك التاريخ. لمزيد من المعلومات، راجع إعلان نشر المدونة. تجمع خدمة Azure Machine Configuration بين ميزات ملحق DSC، وتكوين حالة أتمتة Azure، والميزات الأكثر شيوعا المطلوبة من ملاحظات العملاء. يتضمن تكوين جهاز Azure أيضا دعم الجهاز المختلط من خلال الخوادم الممكنة بواسطة Arc.
هام
ستتم إزالة ارتباطات التنقل Add و Compose و Gallery من المدخل في 31 مارس 2025.
تنبيه
تم إيقاف Azure Automation DSC ل Linux في 30 سبتمبر 2023. لمزيد من المعلومات، راجع الإعلان.
يمكنك ترجمة برمجية لتكوينات الحالة المطلوبة (DSC) في تكوين حالة الأتمتة من Azure بالطرق التالية:
خدمة الترجمة البرمجية لتكوين حالة Azure
- أسلوب المبتدئين مع واجهة مستخدم تفاعلية
- تتبع حالة الوظيفة بسهولة
Windows PowerShell
- الاتصال من Windows PowerShell على محطة العمل المحلية أو خدمة البناء
- التكامل مع البنية الأساسية لبرنامج ربط العمليات التجارية لإختبار التطوير
- توفير قيم المعلمات المعقدة
- العمل مع بيانات العقدة وبيانات غير العقدة على نطاق واسع
- تحسن ملحوظ في الأداء
يمكنك أيضًا استخدام قوالب إدارة الموارد من Azure مع ملحق تكوين الحالة المطلوبة (DSC) من Azure لدفع التكوينات إلى VMs من Azure. يستخدم ملحق تكوين الحالة المطلوبة من Azure إطار عمل عامل VM Azure لتسليم تكوينات الحالة المطلوبة التي تعمل على Azure VMs، وسنها، وإعداد تقرير عنها. للحصول على تفاصيل الترجمة البرمجية باستخدام قوالب إدارة موارد Azure، راجع ملحق تكوين الحالة المطلوبة مع قوالب إدارة الموارد من Azure.
ترجمة برمجية لتكوين الحالة المطلوبة في تكوين حالة Azure
المدخل
- في حساب التنفيذ التلقائي، حدد تكوين الحالة (DSC) .
- حدد في علامة التبويب Configurations ، ثم حدد على اسم التكوين للتحويل البرمجي.
- حدد التحويل البرمجي.
- إذا لم يكن للتكوين معلمات، تتم مطالبتك بتأكيد ما إذا كنت تريد ترجمته برمجيًا. إذا كان التكوين يحتوي على معلمات، يتم فتح جزء تكوين التحويل البرمجي بحيث يمكنك توفير قيم المعلمات.
- يتم فتح صفحة "مهمة الترجمة البرمجية" بحيث يمكنك تعقب حالة وظيفة الترجمة البرمجية. يمكنك أيضًا استخدام هذه الصفحة لتعقب تكوينات العقدة (مستندات تكوين 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 Automation.
يستخدم المثال التالي FeatureName
IsPresent
والمعلمات لتحديد قيم الخصائص في تكوين عقدة 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.
المدخل
في المدخل، يمكنك إدخال قيم المعلمات بعد النقر فوق ترجمة برمجية.
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. لمزيد من المعلومات، راجع المقالات التالية:
أصول بيانات الاعتماد
إذا كان التكوين يحتوي على معلمة تحدد كائنا PSCredential
، فاستخدم Get-AutomationPSCredential
عن طريق تمرير اسم أصل بيانات اعتماد Azure Automation إلى cmdlet لاسترداد بيانات الاعتماد. يمرر Azure Automation بيانات الاعتماد إلى التكوين.
للحفاظ على بيانات الاعتماد آمنة في تكوينات العقدة، قم بتشفير بيانات الاعتماد في ملف MOF لتكوين العقدة. يجب منح PowerShell DSC الإذن لإخراج بيانات الاعتماد في نص عادي أثناء إنشاء MOF لتكوين العقدة. لا يدرك PowerShell DSC أن Azure Automation يقوم بتشفير ملف MOF بأكمله بعد إنشائه بواسطة مهمة التحويل البرمجي.
يمكنك إخبار PowerShell DSC أنه لا بأس من إخراج بيانات الاعتماد في نص عادي في 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 خيار توقيع محتوى التكوين. يتحقق عامل تكوين الحالة المطلوبة من تكوين عقدة موقعة محليًا على عقدة مدارة. يضمن التحقق أن التكوين المطبق على العقدة يأتي من مصدر معتمد.
يمكنك أيضا استيراد تكوينات العقدة التي تم تجميعها خارج Azure. يتضمن الاستيراد الترجمة البرمجية من محطة عمل مطور أو في خدمة مثل Azure DevOps. هذا النهج له مزايا متعددة، بما في ذلك الأداء والموثوقية.
إشعار
يجب ألا يزيد حجم ملف تكوين العقدة عن 1 ميغابايت للسماح لأتمتة Azure باستيراده.
لمزيدٍ من المعلومات حول توقيع تكوينات العقدة، راجع التحسينات في WMF 5.1 - كيفية توقيع التكوين والنموذج.
استورد تكوين عقدة في مدخل Azure
في حساب Automation الخاص بك، حدد State configuration (DSC) ضمن Configuration Management.
في صفحة State configuration (DSC)، حدد في علامة التبويب Configurations ، ثم حدد Add.
في صفحة Import، حدد رمز المجلد بجوار حقل Node Configuration File للاستعراض بحثا عن ملف MOF لتكوين عقدة على الكمبيوتر المحلي.
أدخل اسمًا في حقل اسم التكوين. يجب أن يتطابق هذا الاسم مع اسم التكوين الذي تمت الترجمة البرمجية لتكوين العقدة منه.
حدد موافق.
استورد تكوين عقدة باستخدام Azure PowerShell
يمكنك استخدام cmdlet Import-AzAutomationDscNodeConfiguration لاستيراد تكوين عقدة في حسابك للأتمتة.
$importAzAutomationDscNodeConfigurationSplat = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
ConfigurationName = 'MyNodeConfiguration'
Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat
الخطوات التالية
- للبدء، راجع بدء استخدام Azure Automation State Configuration.
- للتعرف على تجميع تكوينات DSC بحيث يمكنك تعيينها للعقد الهدف، راجع تجميع تكوينات DSC في Azure Automation State Configuration.
- للحصول على مرجع Cmdlet PowerShell، راجع Az.Automation.
- للحصول على معلومات التسعير، راجع تسعير تكوين حالة Azure Automation
- للحصول على مثال لاستخدام تكوين الحالة في مسار توزيع مستمر، راجع إعداد التوزيع المستمر باستخدام Chocolatey.