Dağıtım betiklerini parametreleştirme

Tamamlandı

Önceki ünitede, yeni bir uygulama ortamı için depolama hesabında başlangıç içeriği hazırlamak için Azure Resource Manager (ARM) şablonuna bazı özel davranışlar eklediniz. Bu, bir uygulama ekibi için belirli bir sorunu çözdü.

Dağıtım betiklerini daha uyarlanabilir hale getirmenin bir yolu betike veri sağlamaktır. komut satırı bağımsız değişkenleri ve ortam değişkenleri olmak üzere iki seçeneğiniz vardır.

Dekont

Bu ünitedeki komutlar kavramları göstermek için gösterilir. Komutları henüz çalıştırmayın. Burada öğrendiklerini yakında öğreneceksin.

Komut satırı bağımsız değişkenlerini kullanma

Kaynaklara deploymentScripts veri geçirmek için ilk seçenek özelliği özelleştirmektir arguments . özelliği, arguments komut satırında sağladığınız bağımsız değişkenler gibi bir dizi bağımsız değişken alır. Bu bağımsız değişkenler, betiği çalıştıracak Azure kapsayıcı örneğinin özelliğine sağlanır command .

Dekont

Bazı ayrıştırmalar gerçekleşir, bu nedenle özelliğinizin bazı çeşitlemelerini test edin arguments . Windows kabuğunun komut satırlarını ayrıştırma yöntemiyle aynı şekilde bir dizi dizeye bölünecektir.

"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'
}

Ortam değişkenlerini kullanma

İkinci seçeneğiniz, betiklerinizin erişebileceği ortam değişkenleri oluşturmaktır.

"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'
}

Ortam değişkenlerini kullanmanın avantajlarından biri, dağıtım betiklerine geçirilmesi gerekebilecek gizli diziler için seçeneğini kullanabilmenizdir.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'
}

Parametreler arasında geçiş

Öğrendiğiniz gibi, parametre değerlerini doğrudan dağıtım betiğinin özelliklerinde ayarlayabilirsiniz. Geçirilebilen değerler için birkaç seçenek daha vardır. Daha önce oluşturulan kaynaklardan gelen dinamik değerleri, şablonda bildirilen değişkenleri veya dağıtım zamanında doğrudan şablona geçirilen parametreleri kullanabilirsiniz.

Bu senaryolar, veya environmentVariables özelliğindeki arguments şablon işlevleri aracılığıyla kullanılabilir. Değerlere erişmek ve bunları şablona geçirmek için ARM şablonu işlevlerinden herhangi birini kullanabilirsiniz. Bu işlevler , parametersveya variablesişlevlerini içerirreference.

Bu senaryolar, veya environmentVariables özelliğindeki arguments şablon işlevleri aracılığıyla kullanılabilir. Değerlere erişmek ve bunları şablona geçirmek için herhangi bir Bicep özelliğini kullanabilirsiniz. Örneğin, sembolik adlarını kullanarak diğer kaynakların özelliklerine ve parametrelere ve değişkenlere başvurabilirsiniz.