Føj fleksibilitet til din Azure Resource Manager-skabelon ved hjælp af parametre og output
I det sidste undermodul oprettede du en Azure Resource Manager-skabelon (ARM) og føjede en Azure Storage-konto til den. Du vil måske bemærke, at der er et problem med skabelonen. Navnet på lagerkontoen er hardcoded. Du kan kun bruge denne skabelon til at installere den samme lagerkonto hver gang. Hvis du vil udrulle en lagerkonto med et andet navn, skal du oprette en ny skabelon, som ikke er en praktisk måde at automatisere dine udrulninger på. Sku'en for lagerkontoen er også hardcoded, hvilket betyder, at du ikke kan variere typen af lagerkonto for forskellige miljøer. Husk, at i vores scenarie kan hver udrulning have en anden type lagerkonto. Du kan gøre skabelonen mere genbrugelig ved at tilføje en parameter for SKU'en for lagerkontoen.
I dette undermodul får du mere at vide om de parametre og output sektioner i skabelonen.
PARAMETRE FOR ARM-skabelon
MED ARM-skabelonparametre kan du tilpasse udrulningen ved at angive værdier, der er skræddersyet til et bestemt miljø. Du sender f.eks. forskellige værdier, afhængigt af om du udruller til et miljø til udvikling, test, produktion eller andre. Den forrige skabelon bruger f.eks. SKU'en Standard_LRS lagerkonto. Du kan genbruge denne skabelon til andre installationer, der opretter en lagerkonto, ved at gøre navnet på sku'en for lagerkontoen til en parameter. Derefter skal du angive navnet på den SKU, du vil have til denne bestemte installation, når skabelonen installeres. Du kan udføre dette trin enten på kommandolinjen eller ved hjælp af en parameterfil.
I afsnittet parameters
i skabelonen angiver du, hvilke værdier du kan angive, når du udruller ressourcerne. Du er begrænset til 256 parametre i en skabelon. Parameterdefinitioner kan bruge de fleste skabelonfunktioner.
De tilgængelige egenskaber for en parameter er:
"parameters": {
"<parameter-name>": {
"type": "<type-of-parameter-value>",
"defaultValue": "<default-value-of-parameter>",
"allowedValues": [
"<array-of-allowed-values>"
],
"minValue": <minimum-value-for-int>,
"maxValue": <maximum-value-for-int>,
"minLength": <minimum-length-for-string-or-array>,
"maxLength": <maximum-length-for-string-or-array-parameters>,
"metadata": {
"description": "<description-of-the-parameter>"
}
}
}
De tilladte typer parametre er:
- streng
- secureString
- Heltal
- Boolesk
- objekt
- secureObject
- Array
Anbefalinger til brug af parametre
Brug parametre til indstillinger, der varierer afhængigt af miljøet. f.eks. SKU, størrelse eller kapacitet. Brug også parametre til ressourcenavne, som du selv vil angive for nem identifikation eller for at overholde interne navngivningskonventioner. Angiv en beskrivelse af hver parameter, og brug standardværdier, når det er muligt.
Af sikkerhedsmæssige årsager må du aldrig hardcode eller angive standardværdier for brugernavne og/eller adgangskoder i skabeloner. Brug altid parametre til brugernavne og adgangskoder (eller hemmeligheder). Brug secureString- til alle adgangskoder og hemmeligheder. Hvis du overfører følsomme data i et JSON-objekt, skal du bruge secureObject- type. Skabelonparametre med secureString- eller secureObject- typer kan ikke læses eller høstes efter udrulningen af ressourcen.
Brug parametre i en ARM-skabelon
I afsnittet parametre i ARM-skabelonen skal du angive de parametre, du kan angive, når du udruller ressourcerne. Du er begrænset til 256 parametre i en skabelon.
Her er et eksempel på en skabelonfil med en parameter for sku'en for lagerkontoen, der er defineret i skabelonens parameters
afsnit. Du kan angive en standard for parameteren, der skal bruges, hvis der ikke er angivet en værdi ved udførelse.
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
}
}
Brug derefter parameteren i ressourcedefinitionen. Syntaksen er [parameters('name of the parameter')]
. Når du installerer, skal du derefter bruge funktionen parameters
. I det næste modul får du mere at vide om funktioner.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "[resourceGroup().location]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
Når du installerer skabelonen, kan du angive en værdi for parameteren. Bemærk den sidste linje i følgende kommando:
templateFile="azuredeploy.json"
az deployment group create \
--name testdeployment1 \
--template-file $templateFile \
--parameters storageAccountType=Standard_LRS
ARM-skabelonoutput
I sektionen MED ARM-skabelonens output kan du angive de værdier, der returneres efter en vellykket udrulning. Her er de elementer, der udgør outputsektionen.
"outputs": {
"<output-name>": {
"condition": "<boolean-value-whether-to-output-value>",
"type": "<type-of-output-value>",
"value": "<output-value-expression>",
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
}
}
Element | Beskrivelse |
---|---|
outputnavn | Skal være et gyldigt JavaScript-id. |
betingelse | (Valgfrit) En boolesk værdi, der angiver, om denne outputværdi returneres. Når sand, medtages værdien i outputtet for udrulningen. Når falsk, springes outputværdien over for denne installation. Når den ikke er angivet, er standardværdien true. |
type | Outputværdiens type. |
værdi | (Valgfrit) Et skabelonsprogudtryk, der skal evalueres og returneres som en outputværdi. |
kopiér | (Valgfrit) Kopi bruges til at returnere mere end én værdi for et output. |
Brug output i en ARM-skabelon
Her er et eksempel på output af lagerkontoens slutpunkter:
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference('learntemplatestorage123').primaryEndpoints]"
}
}
Bemærk den reference
del af udtrykket. Denne funktion henter lagringskontoens kørselstilstand.
Udrul en ARM-skabelon igen
Husk, at ARM-skabeloner er idempotent, hvilket betyder, at du kan installere skabelonen i det samme miljø igen, og hvis der ikke ændres noget i skabelonen, ændres intet i miljøet. Hvis der foretages en ændring af skabelonen (f.eks. du ændrer en parameterværdi), er det kun denne ændring, der installeres. Skabelonen kan indeholde alle de ressourcer, du har brug for til din Azure-løsning, og du kan sikkert udføre en skabelon igen. Ressourcer oprettes kun, hvis de ikke allerede findes, og de opdateres kun, hvis der er en ændring.