Underhålla flera Azure-distributioner med hjälp av Azure Resource Manager-malltaggar och parameterfiler
Det finns två funktioner i Arm-mallar (Azure Resource Manager) som du vill använda när du distribuerar till mer än en Azure-miljö. Dessa funktioner är resurstaggar och ARM-mallparameterfiler.
När du lägger till fler resurser i dina miljöer upptäcker du snabbt att du behöver ett sätt att identifiera syftet med dessa resurser. Resurser har ett tags:
-attribut för detta syfte. När du distribuerar till fler miljöer behöver du ett effektivt sätt att hålla reda på indataparametrarna. ARM-mallar kan använda parameterfiler för att hantera parametrar för varje distributionsmiljö.
Vad är en Azure-resurstagg?
Du kan tagga resurser för att lägga till värden som hjälper dig att identifiera deras användning. Du kan till exempel lägga till taggar som visar miljön och projektet som en resurs tillhör. Eller så kan du lägga till taggar som identifierar ett kostnadsställe eller det team som äger en resurs. Lägg till alla värden som passar din organisation.
Taggvärdet visas på översiktssidan för Azure-resursen och i kostnadsrapporter.
Hur skapar jag en Azure-resurstagg?
Varje resurs har ett tags:
attribut. Hittills har du använt standard displayName
för taggen för ditt lagringskonto:
"tags": {
"displayName": "[parameters('storageName')]"
},
Om du vill göra det här attributet mer användbart kan du definiera en parameter som innehåller mer information och sedan använda parametern i attributet tags:
. Du kan till exempel skapa en parameter för att lagra ett objekt som heter resourceTags
:
"resourceTags": {
"type": "object",
"defaultValue": {
"Environment": "Dev",
"Project": "Inventory"
}
}
Här har du skapat ett objekt för att lagra värden för ett miljönamn och ett projektnamn, men du kan definiera vad du vill.
Sedan kan du använda den parametern för alla resurser som är för Dev-miljön och inventeringsprojektet. till exempel ditt lagringskonto.
"resources": [{
"name": "[variables('uniqueStorageName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"tags": "[parameters('resourceTags')]",
...
}],
Vad är en ARM-mallparameterfil?
En ARM-mallparameterfil innehåller värden som skickas till ARM-mallen när mallen körs. Genom att använda en parameterfil för varje miljö som en ARM-mall distribueras till ser du till att rätt parametrar har angetts för den specifika miljön. Du ser också till att du kan spåra historiken och underhållet av dessa parametervärden i källkontrollen.
Hur använder jag ARM-mallparameterfiler?
ARM-mallparameterfiler är JSON-filer som innehåller parametervärden. För de parametrar som du har använt i ARM-mallen hittills kan du till exempel skapa en mallparameterfil på följande sätt:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "storage"
},
"storageSKU": {
"value": "Standard_LRS"
},
"resourceTags": {
"value": {
"Environment": "Dev",
"Project": "Learn"
}
}
}
}
Du kan sedan skapa en fil som liknar den här filen för varje miljö. Dessa filer kan till exempel anropas azuredeploy.parameters.dev.json och azuredeploy.parameters.prod.jsonoch innehålla olika värden för parametrarna.
Om du vill distribuera en ARM-mall med hjälp av en parameterfil anger du sökvägen till parameterfilen i distributionskommandot. I Azure CLI använder du --parameters {path to parameter file}
. I PowerShell använder du -TemplateParameterFile {path to parameter file}
.
templateFile="{path-to-the-template-file}"
devParameterFile="{path-to-azuredeploy.parameters.dev.json}"
az group create \
--name myResourceGroupDev \
--location "East US"
az deployment group create \
--name devenvironment \
--resource-group myResourceGroupDev \
--template-file $templateFile \
--parameters $devParameterFile