وضع المعلمات على البرامج النصية للتوزيع

مكتمل

في الوحدة السابقة، أضفت بعض السلوك المخصص إلى قالب Azure Resource Manager (ARM) لبدء المحتوى في حساب تخزين لبيئة تطبيق جديدة. أدى ذلك إلى حل مشكلة محددة لفريق تطبيق واحد.

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

إشعار

يتم عرض الأوامر في هذه الوحدة لتوضيح المفاهيم. لا تشغّل الأوامر الآن. ستتدرب على ما تتعلمه هنا قريبا.

استخدام وسيطات سطر الأوامر

يتمثل أول خيار لتمرير البيانات إلى موارد deploymentScripts في تخصيص خاصية arguments. تأخذ الخاصية arguments سلسلة من الوسيطات تماماً مثل تلك التي توفرها في سطر الأوامر. ويتم توفير هذه الوسيطات للخاصية command لمثيل حاوية Azure الذي سيقوم بتشغيل البرنامج النصي.

إشعار

ستحدث بعض عمليات التحليل، لذا اختبر بعض الخصائص المتنوعة لخاصية arguments الخاصة بك. سيتم تقسيمها إلى صفيف من السلاسل بنفس الطريقة التي يوزع Windows shell سطور الأوامر.

"properties": {
   "arguments": "-Name Learner",
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

استخدام متغيرات البيئة

يتمثل خيارك الثاني في إنشاء متغيرات البيئة التي يمكن للبرامج النصية الوصول إليها.

"properties": {
   "arguments": "-Name Learner",
   "environmentVariables:": [
       {
         "name": "Subject",
         "value": "Deployment Scripts"
       }
   ],
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       $output += \"Learning about $env:Subject can be very helpful in your deployments.\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  environmentVariables: [
    {
      name: 'Subject'
      value: 'Deployment Scripts'
    }
  ]
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    $output += "Learning about $env:Subject can be very helpful in your deployments."
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

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

"properties": {
   "arguments": "-Name Learner",
   "environmentVariables:": [
       {
         "name": "Subject",
         "value": "Deployment Scripts"
       },
       {
         "name": "MySecretValue",
         "secureValue": "PleaseDoNotPrintMeToTheConsole!"
       }
   ],
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       $output += \"Learning about $env:Subject can be very helpful in your deployments.\"
       $output += \"Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way.\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  environmentVariables: [
    {
      name: 'Subject'
      value: 'Deployment Scripts'
    }
    {
      name: 'MySecretValue'
      secureValue: 'PleaseDoNotPrintMeToTheConsole!'
    }
  ]
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    $output += "Learning about $env:Subject can be very helpful in your deployments."
    $output += "Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way."
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

المرور عبر المعلمات

كما تعلمت، يمكنك تعيين قيم المعلمات مباشرة في خصائص البرنامج النصي للتوزيع. يوجد العديد من الخيارات الأخرى للقيم التي يمكن تمريرها. يمكنك استخدام القيم الديناميكية القادمة من الموارد التي تم إنشاؤها مسبقاً، أو المتغيرات المعلنة في القالب، أو المعلمات التي تم تمريرها مباشرةً إلى القالب في وقت النشر.

تتوفر هذه السيناريوهات من خلال وظائف القالب في الخاصية arguments أو environmentVariables. يمكنك استخدام أي من وظائف قالب ARM للوصول إلى القيم وتمريرها إلى القالب. تتضمن هذه الوظائف reference أو parameters أو variables.

تتوفر هذه السيناريوهات من خلال وظائف القالب في الخاصية arguments أو environmentVariables. يمكنك استخدام أي من ميزات Bicep للوصول إلى القيم وتمريرها إلى القالب، مثل الإشارة إلى الخصائص من الموارد الأخرى باستخدام أسمائها الرمزية، والإشارة إلى المعلمات والمتغيرات.