إدارة المتغيرات في Azure Automation

الأصول المتغيرة هي القيم المتوفرة لكافة دفاتر التشغيل وتكوينات DSC في حساب Automation الخاص بك. يمكنك إدارتها من مدخل Microsoft Azure أو من PowerShell أو ضمن دفتر تشغيل أو في تكوين DSC.

متغيرات التنفيذ التلقائي مفيدة للسيناريوهات التالية:

  • مشاركة قيمة بين عدة دفاتر تشغيل أو تكوينات DSC.

  • مشاركة قيمة بين مهام متعددة من نفس دفتر التشغيل أو تكوين DSC.

  • إدارة قيمة تستخدمها دفاتر التشغيل أو تكوينات DSC من المدخل أو من سطر أوامر PowerShell. مثال على ذلك مجموعة من عناصر التكوين الشائعة، مثل قائمة محددة بأسماء الأجهزة الظاهرية ومجموعة موارد محددة واسم مجال AD والمزيد.

يحافظ Azure Automation على المتغيرات ويجعلها متوفرة حتى في حالة فشل دفتر التشغيل أو تكوين DSC. يسمح هذا السلوك لدفتر تشغيل أو تكوين DSC واحد بتعيين قيمة ثم يتم استخدامها من قبل دفتر تشغيل آخر أو بواسطة نفس دفتر التشغيل أو تكوين DSC في المرة التالية التي يتم تشغيلها.

تخزن Azure Automation كل متغير مشفر بشكل آمن. عند إنشاء متغير، يمكنك تحديد التشفير والتخزين بواسطة Azure Automation كأصل آمن. بعد إنشاء المتغير، لا يمكنك تغيير حالة التشفير الخاصة به دون إعادة إنشاء المتغير. إذا كانت متغيرات حساب Automation تخزن البيانات الحساسة التي لم يتم تشفيرها مسبقًا، ستحتاج إلى حذفها وإعادة إنشائها كمتغيرات مشفرة. توصية Microsoft Defender for Cloud هي تشفير جميع متغيرات Azure Automation كما هو موضح في متغيرات حساب التنفيذ التلقائي يجب تشفيرها. إذا كان لديك متغيرات غير مشفرة تريد استبعادها من توصية الأمان هذه، راجع استثناء مورد من التوصيات ودرجة الأمان لإنشاء قاعدة استثناء.

إشعار

تتضمن الأصول الآمنة في Azure Automation بيانات الاعتماد والشهادات والاتصالات والمتغيرات المشفرة. يتم تشفير هذه الأصول وتخزينها في Azure Automation باستخدام مفتاح فريد يتم إنشاؤه لكل حساب Automation. يخزن Azure Automation المفتاح في Key Vault المدار من قبل النظام. قبل تخزين أصل آمن، تقوم الأتمتة بتحميل المفتاح من Key Vault ثم تستخدمه لتشفير الأصل.

أنواع المتغيرات

عند إنشاء متغير مع مدخل Microsoft Azure، يجب تحديد نوع بيانات من القائمة المنسدلة بحيث يمكن للمدخل عرض عنصر التحكم المناسب لإدخال قيمة المتغير. فيما يلي أنواع المتغيرات المتوفرة في Azure Automation:

  • السلسلة‬
  • Integer
  • DateTime
  • Boolean
  • قيمة فارغة

لا يقتصر المتغير على نوع البيانات المحدد. يجب تعيين المتغير باستخدام Windows PowerShell إذا كنت تريد تحديد قيمة من نوع مختلف. إذا قمت بالإشارة إلى Not defined، يتم تعيين قيمة المتغير إلى Null. يجب تعيين القيمة مع cmdlet Set-AzAutomationVariable أو cmdlet Set-AutomationVariable الداخلية. يمكنك استخدام Set-AutomationVariable في دفاتر التشغيل الخاصة بك التي تهدف إلى تشغيل في بيئة الاختبار المعزولة لـAzure أو على Windows Hybrid Runbook Worker.

لا يمكنك استخدام مدخل Microsoft Azure لإنشاء قيمة لنوع متغير معقد أو تغييرها. ومع ذلك، يمكنك توفير قيمة من أي نوع باستخدام Windows PowerShell. يتم استرداد أنواع معقدة مثل Newtonsoft.Json.Linq.JProperty لنوع كائن معقد بدلًا من نوع PSObject PSCustomObject.

يمكنك تخزين قيم متعددة إلى متغير واحد عن طريق إنشاء صفيف أو تجزئة وحفظه إلى المتغير.

إشعار

يمكن أن تكون متغيرات اسم الجهاز الظاهري بحد أقصى 80 حرفًا. يمكن أن تكون متغيرات مجموعة الموارد بحد أقصى 90 حرفًا. راجع قواعد وقيود التسمية لموارد Azure.

PowerShell cmdlets للوصول إلى الشهادات

تنشئ cmdlets في الجدول التالي متغيرات Automation وتديرها باستخدام PowerShell. يتم شحنه كجزء من وحدات Az.

Cmdlet ‏‏الوصف
Get-AzAutomationVariable تستعيد قيمة متغير موجود. إذا كانت القيمة نوعًا بسيطًا، يتم استرداد نفس النوع. إذا كانت نوعًا معقدًا، يتم استرداد النوع PSCustomObject. 1
New-AzAutomationVariable إنشاء متغير جديد و تعيين قيمته.
Remove-AzAutomationVariable إزالة متغير موجود.
Set-AzAutomationVariable تعيين قيمة متغير موجود.

1 لا يمكنك استخدام cmdlet هذا لاسترداد قيمة متغير مشفر. الطريقة الوحيدة للقيام بذلك هي باستخدام cmdlet Get-AutomationVariable الداخلي في دفتر التشغيل أو تكوين DSC. على سبيل المثال، لمشاهدة قيمة متغير مشفر، قد تقوم بإنشاء دفتر تشغيل للحصول على المتغير ثم كتابته إلى تدفق الإنتاج:

$encryptvar = Get-AutomationVariable -Name TestVariable
Write-output "The encrypted value of the variable is: $encryptvar"

cmdlets الداخلية للوصول إلى الشهادات

يتم استخدام cmdlets في الجدول التالي للوصول إلى بيانات الاعتماد في تكوينات DSC ودفاتر التشغيل. تأتي cmdlets هذه مع الوحدة النمطية العامة Orchestrator.AssetManagement.Cmdlets. لمزيد من المعلومات، راجع ⁦⁩أوامر cmdlets الداخلية⁦⁩.

cmdlet الداخلي ‏‏الوصف
Get-AutomationVariable تستعيد قيمة متغير موجود.
Set-AutomationVariable تعيين قيمة متغير موجود.

إشعار

تجنب استخدام المتغيرات في المعلمة⁦Name⁩ لـcmdlet Get-AutomationVariable في دفتر التشغيل أو تكوين DSC. يمكن أن تعقد هذه المتغيرات اكتشاف التبعيات بين دفاتر التشغيل أو تكوينات DSC ومتغيرات Automation في وقت التصميم.

وظائف Python للوصول إلى المتغيرات

يتم استخدام الدوال في الجدول التالي للوصول إلى متغيرات في دفتر تشغيل Python 2 و3. دفتر تشغيل Python 3 حاليًا قيد المعاينة.

دوال Python ‏‏الوصف
automationassets.get_automation_variable تستعيد قيمة متغير موجود.
automationassets.set_automation_variable تعيين قيمة متغير موجود.

إشعار

يجب استيراد الوحدة automationassets في الجزء العلوي من دفتر تشغيل Python الخاص بك للوصول إلى وظائف الأصول.

إنشاء متغير والحصول عليه

إشعار

إذا كنت تريد إزالة التشفير لمتغير، يجب حذف المتغير وإعادة إنشائه كغير مشفر.

إنشاء متغير والحصول عليه باستخدام مدخل Microsoft Azure

  1. من حساب Automation، في الجزء الأيمن حدد المتغيرات ضمن Shared Resources.
  2. في صفحة المتغيرات، حدد إضافة متغير.
  3. أكمل الخيارات الموجودة في صفحة المتغير الجديد ثم حدد إنشاء لحفظ المتغير الجديد.

إشعار

بمجرد حفظ متغير مشفر، لا يمكن عرضه في المدخل. يمكن تحديثه وحسب.

إنشاء متغير والحصول عليه في Windows PowerShell

يستخدم دفتر التشغيل أو تكوين DSC cmdlet New-AzAutomationVariable لإنشاء متغير جديد وتعيين قيمته الأولية. إذا كان المتغير مشفرًا، يجب أن يستخدم الاستدعاء المعلمة Encrypted. يمكن لبرنامجك النصي استرداد قيمة المتغير باستخدام Get-AzAutomationVariable.

إشعار

لا يمكن لبرنامج PowerShell النصي استرداد قيمة مشفرة. الطريقة الوحيدة للقيام بذلك هي استخدام cmdlet Get-AutomationVariable الداخلي.

يوضح المثال التالي كيفية إنشاء متغير سلسلة ثم إرجاع قيمته.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"
$variableValue = "My String"

New-AzAutomationVariable -ResourceGroupName "ResourceGroup01" 
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable' `
-Encrypted $false -Value 'My String'
$string = (Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable').Value

يوضح المثال التالي كيفية إنشاء متغير بنوع معقد ثم استرداد خصائصه. في هذه الحالة، يتم استخدام كائن جهاز ظاهري من Get-AzVM لتحديد مجموعة فرعية من خصائصه.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"

$vm = Get-AzVM -ResourceGroupName "ResourceGroup01" -Name "VM01" | Select Name, Location, Extensions
New-AzAutomationVariable -ResourceGroupName "ResourceGroup01" -AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable" -Encrypted $false -Value $vm

$vmValue = Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable"

$vmName = $vmValue.Value.Name
$vmTags = $vmValue.Value.Tags

أمثلة لدفتر التشغيل النصي

يوضح المثال التالي كيفية تعيين واسترداد متغير في دفتر تشغيل نصي. يفترض هذا المثال إنشاء متغيرات عدد صحيح المسماة numberOfIterations وNumberOfRunnings ومتغير سلسلة المسماة sampleMessage.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"

$numberOfIterations = Get-AutomationVariable -Name "numberOfIterations"
$numberOfRunnings = Get-AutomationVariable -Name "numberOfRunnings"
$sampleMessage = Get-AutomationVariable -Name "sampleMessage"

Write-Output "Runbook has been run $numberOfRunnings times."

for ($i = 1; $i -le $numberOfIterations; $i++) {
    Write-Output "$i`: $sampleMessage"
}
Set-AutomationVariable -Name numberOfRunnings -Value ($numberOfRunnings += 1)

أمثلة لدفتر التشغيل الرسومي

في دفتر تشغيل رسومي، يمكنك إضافة أنشطة cmdlets الداخلية Get-AutomationVariable أو Set-AutomationVariable. انقر فقط بزر الماوس الأيمن فوق كل متغير في جزء المكتبة من المحرر الرسومي وحدد النشاط الذي تريده.

Add variable to canvas

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

Set simple variable

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