Buat parameter pada skrip penyebaran

Selesai

Di unit sebelumnya, Anda menambahkan beberapa perilaku kustom ke templat Azure Resource Manager (ARM) untuk menyiapkan konten awal di akun penyimpanan untuk lingkungan aplikasi baru. Ini memecahkan sebuah masalah khusus untuk satu tim aplikasi.

Sebuah cara untuk membuat skrip penyebaran lebih mudah beradaptasi adalah dengan memberikan data ke skrip. Anda memiliki dua opsi, argumen baris perintah, dan variabel lingkungan.

Catatan

Perintah dalam unit ini ditampilkan untuk mengilustrasikan konsep. Jangan jalankan perintah terlebih dahulu. Anda akan segera mempraktikkan apa yang Anda pelajari di sini.

Menggunakan argumen baris perintah

Opsi pertama untuk meneruskan data ke sumber daya deploymentScripts adalah mengkostumisasi properti arguments. Properti arguments mengambil string argumen seperti yang Anda berikan di baris perintah. Argumen ini diberikan ke properti command instans kontainer Azure yang akan menjalankan skrip.

Catatan

Beberapa penguraian terjadi, sehingga uji beberapa variasi properti arguments Anda. Ini akan dipecah menjadi larik string dengan cara yang sama seperti garis perintah urai shell Windows.

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

Menggunakan variabel lingkungan

Opsi kedua Adalah membuat variabel lingkungan yang dapat diakses skrip Anda.

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

Salah satu manfaat menggunakan variabel lingkungan adalah Anda dapat menggunakan secureValue opsi untuk rahasia yang mungkin perlu diteruskan ke skrip penyebaran.

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

Melewati parameter

Seperti yang telah Anda pelajari, Anda dapat mengatur nilai parameter langsung di properti skrip penyebaran. Ada beberapa opsi lain untuk nilai yang bisa diteruskan. Anda dapat menggunakan nilai dinamis yang berasal dari sumber daya yang dibuat sebelumnya, variabel yang dideklarasikan dalam templat, atau parameter yang diteruskan langsung ke templat pada waktu penyebaran.

Skenario ini tersedia melalui fungsi template di properti arguments atau environmentVariables. Anda dapat menggunakan salah satu fungsi template ARM untuk mengakses nilai dan meneruskannya ke templat. Fungsi ini termasuk reference, parameters, atau variables.

Skenario ini tersedia melalui fungsi template di properti arguments atau environmentVariables. Anda dapat menggunakan salah satu fitur Bicep untuk mengakses nilai dan meneruskannya ke templat, seperti merujuk ke properti dari sumber daya lain dengan menggunakan nama simbolis mereka, dan merujuk pada parameter dan variabel.