Zadání hodnot pomocí souborů parametrů
V předchozích lekcích jste při vytváření nasazení zadali hodnoty parametrů na příkazovém řádku. Tento přístup funguje dobře při psaní a testování souborů Bicep, ale nefunguje dobře, pokud máte mnoho parametrů nebo když potřebujete automatizovat nasazení. V této lekci se dozvíte o různých způsobech, jak je možné zadat hodnoty parametrů.
Poznámka:
Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.
Vytvoření souborů parametrů
soubory Parametry usnadňují zadávání hodnot parametrů společně jako sady. V souboru parametrů zadáte hodnoty parametrů v souboru Bicep. Soubory parametrů se vytvářejí pomocí souboru parametrů Bicep s příponou souboru .bicepparam
nebo souboru parametrů JSON zahrnujícího hodnoty parametrů. Soubor parametrů můžete zadat při nasazování šablony Bicep. Soubor parametrů JSON vypadá takto:
{
"$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"
}
]
}
}
}
Pojďme se podrobněji podívat na jednotlivé části souboru parametrů:
-
$schema
pomáhá Azure Resource Manageru pochopit, že tento soubor je soubor parametrů. -
contentVersion
je vlastnost, kterou můžete použít ke sledování významných změn v souboru parametrů, pokud chcete. Obvykle je nastavena na výchozí hodnotu1.0.0.0
. - Oddíl
parameters
uvádí jednotlivé parametry a hodnotu, kterou chcete použít. Hodnota parametru musí být zadána jako objekt. Objekt má vlastnost,value
která definuje skutečnou hodnotu parametru, která se má použít.
Obecně platí, že pro každé prostředí vytvoříte soubor parametrů. Je vhodné zahrnout název prostředí do názvu souboru parametrů. Můžete mít například soubor parametrů s názvem main.parameters.dev.json pro vývojové prostředí a jeden s názvem main.parameters.production.json pro vaše produkční prostředí.
Poznámka:
Ujistěte se, že jste zadali pouze hodnoty parametrů, které existují v šabloně Bicep. Když vytvoříte nasazení, Azure zkontroluje parametry a zobrazí chybu, pokud jste se pokusili zadat hodnotu parametru, který není v souboru Bicep.
Použití souborů parametrů v době nasazení
Při vytváření nového nasazení pomocí příkazu az deployment group create
můžete zadat název souboru parametrů, který chcete použít s argumentem --parameters
:
az deployment group create \
--name main \
--template-file main.bicep \
--parameters main.parameters.json
Když vytvoříte nové nasazení pomocí rutiny New-AzResourceGroupDeployment
, můžete zadat název souboru parametrů, který chcete použít s argumentem -TemplateParameterFile
:
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json
Přepsání hodnot parametrů
Seznámili jste se se třemi způsoby zadávání hodnot parametrů: výchozí hodnoty, příkazový řádek a soubory parametrů. K určení různých hodnot pro stejný parametr se běžně používají různé přístupy. Tento přístup jste už viděli, když jste pracovali s výchozími hodnotami. Když pro parametr vytvoříte výchozí hodnotu, ale pak zadáte jinou hodnotu pomocí příkazového řádku, bude mít přednost hodnota příkazového řádku. Pojďme se podívat, jak se soubory parametrů vejdou do tohoto pořadí priorit.
Vidíte, že soubory parametrů přepisují výchozí hodnoty a hodnoty parametrů příkazového řádku přepisují soubory parametrů.
Pojďme se podívat, jak tento přístup funguje. Tady je příklad souboru Bicep, který definuje tři parametry, z nichž každý má výchozí hodnoty:
param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
name: 'F1'
tier: 'Free'
}
Pojďme se podívat na soubor parametrů, který přepíše hodnotu dvou parametrů, ale nezadá hodnotu parametru 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"
}
}
}
}
Při vytváření nasazení také přepíšeme hodnotu pro appServicePlanInstanceCount
. Podobně jako u souborů parametrů použijete argument --parameters
, ale přidáte hodnotu, kterou chcete přepsat jako vlastní hodnotu:
az deployment group create \
--name main \
--template-file main.bicep \
--parameters main.parameters.json \
appServicePlanInstanceCount=5
Při vytváření nasazení přepíšete jednu z hodnot parametrů. Název parametru zadáte, jako by to byl argument rutiny:
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json `
-appServicePlanInstanceCount 5
Pojďme se podívat, co budou hodnoty.
Parametr | Hodnota | Vysvětlení |
---|---|---|
location |
Umístění skupiny prostředků. | Soubor Bicep určuje tento parametr jako výchozí hodnotu a nepřepíše se. |
appServicePlanSku |
Objekt s vlastností nastavenou name na P1v3 a tier z PremiumV3 . |
Výchozí hodnota v souboru Bicep je přepsána souborem parametrů. |
appServicePlanInstanceCount |
5 |
Hodnota zadaná v době nasazení přepíše výchozí hodnotu a hodnotu v souboru parametrů. |
Pomocí kombinace přístupů k určení hodnot parametrů se můžete vyhnout duplikování hodnot parametrů na spoustě míst, zatímco stále získáte flexibilitu přepsat tam, kde potřebujete.