Meerdere Azure-implementaties onderhouden met behulp van Azure Resource Manager-sjabloontags en parameterbestanden

Voltooid

Er zijn twee functies van ARM-sjablonen (Azure Resource Manager) die u wilt gebruiken wanneer u implementeert in meer dan één Azure-omgeving. Deze functies zijn resourcetags en parameterbestanden voor een ARM-sjabloon.

Wanneer u meer resources toevoegt aan uw omgevingen, zult u snel merken dat u een manier nodig hebt om het doel van deze resources te identificeren. Resources hebben een kenmerk tags: voor dit doeleinde. Wanneer u in meer omgevingen implementeert, hebt u een efficiënte manier nodig om de invoerparameters bij te houden. ARM-sjablonen kunnen parameterbestanden gebruiken om parameters voor elke implementatie-omgeving te beheren.

Wat is een Azure-resourcetag?

U kunt resources taggen om waarden toe te voegen waarmee u het gebruik ervan kunt identificeren. U kunt bijvoorbeeld tags toevoegen waarin de omgeving en het project waartoe een resource behoort, worden vermeld. U kunt ook tags toevoegen die een kostenplaats identificeren of het team dat eigenaar is van een resource. Voeg waarden toe die zinvol zijn voor uw organisatie.

De tagwaarde wordt weergegeven op de overzichtspagina voor de Azure-resource en in kostenrapporten.

Hoe maak ik een Azure-resourcetag?

Elke resource heeft een kenmerk tags:. Tot nu toe hebt u de standaard displayName voor de tag voor uw opslagaccount gebruikt:

"tags": {
          "displayName": "[parameters('storageName')]"
        },

Als u dit kenmerk nuttiger wilt maken, kunt u een parameter definiëren met meer informatie en vervolgens die parameter gebruiken in het kenmerk tags:. U maakt bijvoorbeeld een parameter voor een object met de naam resourceTags:

"resourceTags": {
    "type": "object",
    "defaultValue": {
        "Environment": "Dev",
        "Project": "Inventory"
        }
    }

Hier hebt u een object gemaakt voor het opslaan van waarden voor een omgevingsnaam en een projectnaam, maar u kunt alles definiëren wat u wilt.

Vervolgens kunt u die parameter gebruiken voor elke resource die zich voor de ontwikkelomgeving en het inventarisproject bevindt; Bijvoorbeeld uw opslagaccount.

"resources": [{
        "name": "[variables('uniqueStorageName')]",
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2019-06-01",
        "tags": "[parameters('resourceTags')]",
        ...
    }],

Wat is een parameterbestand voor een ARM-sjabloon?

Een ARM-sjabloonparameterbestand bevat waarden die worden doorgegeven aan de ARM-sjabloon wanneer de sjabloon wordt uitgevoerd. Door een parameterbestand te gebruiken voor elke omgeving waarin een ARM-sjabloon wordt geïmplementeerd, moet u ervoor zorgen dat de juiste parameters zijn ingesteld voor die specifieke omgeving. Ook zorgt u er zo voor dat de geschiedenis en het onderhoud van die parameterwaarden kunnen worden bijgehouden in broncodebeheer.

Hoe kan ik parameterbestanden voor een ARM-sjabloon gebruiken?

De parameters van ARM-sjablonen zijn JSON-bestanden die parameterwaarden bevatten. Voor de parameters die u tot nu toe hebt gebruikt in de ARM-sjabloon, kunt u bijvoorbeeld als volgt een sjabloonparameterbestand maken:

{
    "$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"
        }
      }
    }
  }

Vervolgens kunt u een vergelijkbaar bestand voor elke omgeving maken. Deze bestanden kunnen bijvoorbeeld azuredeploy.parameters.dev.json en azuredeploy.parameters.prod.json worden genoemd en verschillende waarden voor de parameters bevatten.

Als u een ARM-sjabloon wilt implementeren met behulp van een parameterbestand, geeft u het pad op naar het parameterbestand in de implementatieopdracht. In Azure CLI gebruikt --parameters {path to parameter file}u . In PowerShell gebruikt -TemplateParameterFile {path to parameter file}u .

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