DEV, TEST und PROD benötigen unterschiedliche Werte? Verwende Bicep-Parameterdateien
Das wiederverwendbare Template akzeptiert Umgebung, SKU, Owner und Anwendungswerte. Diese Werte in jedem Azure-CLI-Befehl manuell einzugeben, ist jedoch fehleranfällig. Eine TEST-Bereitstellung könnte versehentlich eine PROD-SKU oder den falschen Kostenstellen-Tag erhalten.
Behalte die Ressourcendefinition in main.bicep und speichere die nicht
vertraulichen Werte jeder Umgebung in einer Bicep-Parameterdatei. In diesem
Trip fügst du DEV-, TEST- und PROD-Konfigurationen hinzu und aktualisierst das
vorhandene TEST-Speicherkonto mit der TEST-Datei.
Kostenstellenparameter hinzufügen
Füge diesen Parameter nach owner in main.bicep ein:
@description('Cost allocation identifier applied as a tag.')
param costCenter string
Füge CostCenter zu commonTags hinzu:
var commonTags = {
Application: applicationName
CostCenter: costCenter
Environment: toUpper(normalizedEnvironment)
ManagedBy: 'Bicep'
Owner: owner
}
Das Template definiert, wo der Wert verwendet wird. Die Parameterdateien bestimmen, welchen Wert jede Umgebung erhält.
DEV-Werte erstellen
Erstelle environments/dev.bicepparam:
using '../main.bicep'
param environment = 'dev'
param storageSku = 'Standard_LRS'
param owner = 'DmytroKlymenko@cloudtrips.onmicrosoft.com'
param costCenter = 'CC-DEV-100'
TEST-Werte erstellen
Erstelle environments/test.bicepparam:
using '../main.bicep'
param environment = 'test'
param storageSku = 'Standard_LRS'
param owner = 'DmytroKlymenko@cloudtrips.onmicrosoft.com'
param costCenter = 'CC-TEST-100'
PROD-Werte erstellen
Erstelle environments/prod.bicepparam:
using '../main.bicep'
param environment = 'prod'
param storageSku = 'Standard_ZRS'
param owner = 'DmytroKlymenko@cloudtrips.onmicrosoft.com'
param costCenter = 'CC-PROD-100'
using '../main.bicep' verknüpft jede Parameterdatei mit dem Template. Bicep
kann dadurch einen fehlenden Parameter, einen unbekannten Parameternamen, einen
ungültigen Typ oder einen durch @allowed abgelehnten Wert erkennen.
Die beabsichtigten Unterschiede sind:
DEV: Standard_LRS, CC-DEV-100
TEST: Standard_LRS, CC-TEST-100
PROD: Standard_ZRS, CC-PROD-100
Parameterdateien sind Klartext und gehören nur dann in die Versionsverwaltung, wenn ihre Werte nicht vertraulich sind. Speichere keine Kennwörter, Zugriffsschlüssel, Client Secrets oder Zertifikate in diesen Dateien.
Alle drei Dateien validieren
Erstelle jede Parameterdatei, ohne generiertes JSON zu speichern:
az bicep build-params \
--file environments/dev.bicepparam \
--stdout > /dev/null
az bicep build-params \
--file environments/test.bicepparam \
--stdout > /dev/null
az bicep build-params \
--file environments/prod.bicepparam \
--stdout > /dev/null
Keine Ausgabe bedeutet, dass alle drei Parameterdateien erfolgreich mit
main.bicep kompiliert wurden. Behebe jede Diagnose vor der Bereitstellung.
TEST-Aktualisierung anzeigen
Wähle das CloudTrips-TEST-Abonnement:
az account set \
--subscription "<Name oder ID des CloudTrips-TEST-Abonnements>"
Zeige die Bereitstellung nur mit der TEST-Parameterdatei an:
az deployment group what-if \
--resource-group rg-cloudtrips-bicep-test-weu \
--parameters environments/test.bicepparam
Der Befehl benötigt keine Option --template-file. Die using-Anweisung
identifiziert bereits main.bicep.
Bestätige, dass What-if das vorhandene TEST-Speicherkonto anspricht und Folgendes hinzufügen möchte:
CostCenter: CC-TEST-100
Die Umgebung darf nicht auf DEV oder PROD und die SKU nicht auf
Standard_ZRS geändert werden.

Mit TEST-Parameterdatei bereitstellen
Wende die geprüfte Änderung an:
az deployment group create \
--name deploy-cloudtrips-storage-test-params \
--resource-group rg-cloudtrips-bicep-test-weu \
--parameters environments/test.bicepparam \
--query "properties.{state:provisioningState,outputs:outputs}" \
--output yaml
Bestätige den Status Succeeded. Kopiere den zurückgegebenen
storageAccountName und prüfe anschließend die umgebungsspezifische
Konfiguration:
storage_account_name="<storageAccountName-Ausgabe>"
az storage account show \
--resource-group rg-cloudtrips-bicep-test-weu \
--name "$storage_account_name" \
--query "{name:name,sku:sku.name,environment:tags.Environment,costCenter:tags.CostCenter,owner:tags.Owner}" \
--output table
Das Ergebnis muss Folgendes zeigen:
SKU: Standard_LRS
Environment: TEST
CostCenter: CC-TEST-100
Owner: DmytroKlymenko@cloudtrips.onmicrosoft.com

Ein Ressourcentemplate unterstützt nun alle drei Umgebungen ohne wiederholte
Inline-Werte. Eine Umgebung wird durch ihre geprüfte .bicepparam-Datei
ausgewählt; main.bicep muss dafür weder kopiert noch bearbeitet werden.