Flexibiliteit toevoegen aan uw Azure Resource Manager-sjabloon met behulp van parameters en uitvoer
In de laatste les hebt u een ARM-sjabloon (Azure Resource Manager) gemaakt en er een Azure-opslagaccount aan toegevoegd. U hebt waarschijnlijk al gemerkt dat er een probleem is met uw sjabloon. De naam van het opslagaccount is vastgelegd. U kunt deze sjabloon alleen gebruiken om steeds weer hetzelfde opslagaccount te implementeren. Als u een opslagaccount met een andere naam wilt implementeren, moet u een nieuwe sjabloon maken. Dit is geen praktische manier om uw implementaties te automatiseren. De opslagaccount-SKU is ook vastgelegd, wat betekent dat u het type opslagaccount voor verschillende omgevingen niet kunt variëren. Zoals u weet, kan elke implementatie in ons scenario een ander type opslagaccount hebben. U kunt ervoor zorgen dat uw sjabloon steeds weer opnieuw kan worden gebruikt door een parameter voor de opslagaccount-SKU toe te voegen.
In deze les krijgt u informatie over de parameters en uitvoersecties van de sjabloon.
ARM-sjabloonparameters
Met ARM-sjabloonparameters kunt u de implementatie aanpassen door waarden op te geven die zijn afgestemd op een bepaalde omgeving. U kunt bijvoorbeeld verschillende waarden doorgeven, afhankelijk van of u in een ontwikkel-, test-, productie- of andere omgeving implementeert. De bovenstaande sjabloon maakt bijvoorbeeld gebruik van de opslagaccount-SKU Standard_LRS. U kunt deze sjabloon opnieuw gebruiken voor andere implementaties waarmee een opslagaccount wordt gemaakt, door van de naam van de opslagaccount-SKU een parameter te maken. Vervolgens geeft u de naam op van de SKU die u voor deze specifieke implementatie wilt uitvoeren wanneer de sjabloon wordt geïmplementeerd. U kunt dit doen via de opdrachtregel of door een parameterbestand te gebruiken.
In de parameters
sectie van de sjabloon geeft u op welke waarden u kunt invoeren wanneer u de resources implementeert. U kunt maximaal 256 parameters opgeven in een sjabloon. Parameterdefinities kunnen de meeste sjabloonfuncties gebruiken.
De eigenschappen die beschikbaar zijn voor een parameter zijn:
"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 toegestane typen parameters zijn:
- tekenreeks
- secureString
- integers
- boolean
- object
- secureObject
- matrix
Aanbevelingen voor het gebruik van parameters
Parameters gebruiken voor instellingen die variëren afhankelijk van de omgeving; Bijvoorbeeld SKU, grootte of capaciteit. Gebruik ook parameters voor resourcenamen die u zelf wilt opgeven voor eenvoudige identificatie of om te voldoen aan interne naamconventies. Geef een beschrijving op voor elke parameter en gebruik standaardwaarden waar mogelijk.
Om veiligheidsredenen moet u nooit de standaardwaarden voor gebruikersnamen en/of wachtwoorden in sjablonen hardcoderen of opgeven. Gebruik altijd parameters voor gebruikersnamen en wachtwoorden (of geheimen). Gebruik secureString voor alle wachtwoorden en geheimen. Als u gevoelige gegevens doorgeeft in een JSON-object, gebruikt u het type secureObject . Sjabloonparameters van het type secureString of secureObject kunnen niet worden gelezen of verzameld nadat de resource is geïmplementeerd.
Parameters in een ARM-sjabloon gebruiken
Geef in de sectie parameters van de ARM-sjabloon de parameters op die u kunt invoeren wanneer u de resources implementeert. U kunt maximaal 256 parameters opgeven in een sjabloon.
Hier volgt een voorbeeld van een sjabloonbestand met een parameter voor de opslagaccount-SKU die is gedefinieerd in de sectie van parameters
de sjabloon. U kunt een standaardwaarde opgeven voor de parameter die moet worden gebruikt als er tijdens de uitvoering geen waarden worden opgegeven.
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
}
}
Gebruik in dat geval de parameter in de resourcedefinitie. De syntaxis is [parameters('name of the parameter')]
. U gebruikt de parameters
functie. In de volgende module vindt u meer informatie over functies.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "[resourceGroup().location]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
Wanneer u de sjabloon implementeert, kunt u een waarde opgeven voor de parameter. Let op de laatste regel in de volgende opdracht:
templateFile="azuredeploy.json"
az deployment group create \
--name testdeployment1 \
--template-file $templateFile \
--parameters storageAccountType=Standard_LRS
Uitvoer van ARM-sjablonen
In de uitvoersectie van uw ARM-sjabloon kunt u waarden opgeven die worden geretourneerd na een geslaagde implementatie. Hier volgen de elementen waaruit de sectie outputs is opgebouwd.
"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 | Beschrijving |
---|---|
uitvoernaam | Moet een geldige JavaScript-id zijn. |
voorwaarde | (Optioneel) Een booleaanse waarde die aangeeft of deze uitvoerwaarde wordt geretourneerd. Als deze 'true' is, wordt de waarde opgenomen in de uitvoer voor de implementatie. Als deze 'false' is, wordt de uitvoerwaarde voor deze implementatie overgeslagen. Wanneer deze niet wordt opgegeven, is 'true' de standaardwaarde. |
type | Het type uitvoerwaarde. |
value | (Optioneel) Een sjabloontaalexpressie die als uitvoerwaarde wordt geëvalueerd en geretourneerd. |
Kopiëren | (Optioneel) Deze waarde wordt gebruikt om meer dan één waarde voor uitvoer te retourneren. |
Uitvoer in een ARM-sjabloon gebruiken
Hier volgt een voorbeeld van het uitvoeren van de eindpunten van het opslagaccount:
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference('learntemplatestorage123').primaryEndpoints]"
}
}
Let op het gedeelte reference
van de expressie. Met deze functie wordt de runtimestatus van het opslagaccount opgehaald.
Een ARM-sjabloon opnieuw implementeren
Zoals u weet, zijn ARM-sjablonen idempotent, wat betekent dat u de sjabloon opnieuw in dezelfde omgeving kunt implementeren en als er niets in de sjabloon is gewijzigd, verandert er niets in de omgeving. Als er een wijziging is aangebracht in de sjabloon (u hebt bijvoorbeeld een parameterwaarde gewijzigd), wordt alleen die wijziging geïmplementeerd. Uw sjabloon kan alle resources bevatten die u nodig hebt voor uw Azure-oplossing, en u kunt een sjabloon veilig opnieuw uitvoeren. Resources worden alleen gemaakt als ze nog niet bestaan en worden alleen bijgewerkt als er een wijziging is.