Menyediakan nilai menggunakan file parameter

Selesai

Di unit sebelumnya, Anda memberikan nilai parameter pada baris perintah saat Anda membuat penyebaran. Pendekatan ini berfungsi dengan baik ketika Anda menulis dan menguji file Bicep Anda, tetapi tidak berfungsi dengan baik ketika Anda memiliki banyak parameter atau ketika Anda perlu mengotomatiskan penyebaran Anda. Dalam unit ini, Anda akan mempelajari berbagai cara agar nilai parameter dapat ditentukan.

Catatan

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

Membuat file parameter

File parameter memudahkan penentuan nilai parameter bersama-sama sebagai satu set. Dalam file parameter, Anda menyediakan nilai untuk parameter dalam file Bicep Anda. File parameter dibuat menggunakan bahasa JavaScript Object Notation (JSON). Anda dapat menyediakan file parameter saat menyebarkan templat Bicep Anda. Berikut adalah tampilan file parameter:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    },
    "cosmosDBAccountLocations": {
      "value": [
        {
          "locationName": "australiaeast"
        },
        {
          "locationName": "southcentralus"
        },
        {
          "locationName": "westeurope"
        }
      ]
    }
  }
}

Mari kita lihat setiap bagian dari file parameter secara lebih terperinci:

  • $schema membantu Azure Resource Manager memahami file ini adalah file parameter.
  • contentVersion adalah properti yang dapat Anda gunakan untuk melacak perubahan yang signifikan dalam file parameter jika Anda ingin. Biasanya, ini diatur ke nilai 1.0.0.0 defaultnya.
  • Bagian parameters mencantumkan setiap parameter dan nilai yang ingin Anda gunakan. Nilai parameter harus ditentukan sebagai objek. Objek memiliki properti yang disebut value yang menentukan nilai parameter aktual yang digunakan.

Secara umum, Anda akan membuat file parameter untuk setiap lingkungan. Ini adalah praktik yang baik untuk menyertakan nama lingkungan di nama file parameter. Misalnya, Anda mungkin memiliki file parameter bernama main.parameters.dev.json untuk lingkungan pengembangan Anda dan satu file lagi bernamamain.parameters.production.json untuk lingkungan produksi Anda.

Catatan

Pastikan Anda hanya menentukan nilai untuk parameter yang ada di templat Bicep Anda. Saat Anda membuat penyebaran, Azure memeriksa parameter Anda dan memberi Anda kesalahan jika Anda mencoba menentukan nilai untuk parameter yang tidak ada dalam file Bicep.

Menggunakan file parameter saat penyebaran

Saat membuat penyebaran baru menggunakan perintah az deployment group create, Anda dapat menentukan nama file parameter yang ingin Anda gunakan dengan argumen --parameters:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json

Saat membuat penyebaran baru menggunakan cmdlet New-AzResourceGroupDeployment, Anda dapat menentukan nama file parameter yang ingin Anda gunakan dengan argumen -TemplateParameterFile:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json

Menimpa nilai parameter

Sekarang Anda sudah mempelajari tentang tiga cara untuk menentukan nilai parameter: nilai default, baris perintah, dan file parameter. Menggunakan pendekatan yang berbeda untuk menentukan nilai yang berbeda untuk parameter yang sama umum dilakukan. Anda sudah melihat pendekatan ini saat bekerja dengan nilai default. Saat Anda membuat nilai default untuk parameter, tetapi kemudian menentukan nilai yang berbeda menggunakan baris perintah, nilai baris perintah lebih diutamakan. Mari kita lihat bagaimana file parameter sesuai dengan urutan prioritas ini.

Diagram that shows the order of precedence for parameter values. Parameter files override default values, and command-line parameter values override parameter files.

Anda dapat melihat file parameter menimpa nilai default, dan nilai parameter baris perintah menimpa file parameter.

Mari kita lihat cara kerja pendekatan ini. Berikut adalah contoh file Bicep yang menentukan tiga parameter, masing-masing dengan nilai default:

param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

Mari kita lihat file parameter yang menimpa nilai dari dua parameter, tetapi tidak menentukan nilai untuk parameter location:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    }
  }
}

Ketika Anda membuat penyebaran, kita juga mengganti nilai untuk appServicePlanInstanceCount. Seperti halnya file parameter, Anda menggunakan argumen --parameters, tetapi Anda menambahkan nilai yang ingin Anda timpa sebagai nilainya sendiri:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json \
               appServicePlanInstanceCount=5

Saat Anda membuat penyebaran, Anda menimpa salah satu nilai parameter. Anda menentukan nama parameter seolah-olah itu adalah argumen untuk cmdlet:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json `
  -appServicePlanInstanceCount 5

Mari kita lihat seperti apa nilainya.

Parameter Nilai Penjelasan
location Lokasi grup sumber daya. File Bicep menentukan parameter ini sebagai nilai default, dan tidak ditimpa.
appServicePlanSku Objek dengan properti name yang diatur ke P1v3 dan tier dari PremiumV3. Nilai default dalam file Bicep ditimpa oleh file parameter.
appServicePlanInstanceCount 5 Nilai yang ditentukan saat penyebaran menimpa nilai default dan nilai dalam file parameter.

Dengan menggunakan campuran pendekatan untuk menentukan nilai parameter, Anda dapat menghindari keharusan menduplikasi nilai parameter di banyak tempat, sambil tetap mendapatkan fleksibilitas untuk menimpa tempat yang Anda perlukan.