Exercice : ajoutez des paramètres et des sorties à votre modèle Azure Resource Manager
Dans cet exercice, vous ajoutez un paramètre pour définir le nom du compte de stockage Azure lors du déploiement. Vous ajoutez ensuite un paramètre pour définir les référence SU de compte de stockage que vous autorisez et définissez celle à utiliser pour ce déploiement. Vous ajoutez également une fonction utile au modèle Azure Resource Manager (modèle ARM) en ajoutant une sortie que vous pouvez utiliser plus tard dans le processus de déploiement.
Créer des paramètres pour le modèle ARM
Ici, vous rendez votre modèle ARM plus flexible en ajoutant des paramètres qui peuvent être définis au moment de l’exécution. Créez un paramètre pour la valeur storageName
.
Dans le fichier azuredeploy.json dans Visual Studio Code, placez votre curseur entre les accolades dans l’attribut parameters. Il se présente comme ceci :
"parameters":{},
Sélectionnez Entrée, puis entrez par. Une liste d’extraits associés s’affiche. Choisissez new-parameter, qui ajoute un paramètre générique au modèle. La réponse ressemble à cet exemple :
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Modifiez le paramètre en remplaçant parameter1 par storageName et laissez chaîne comme type. Ajoutez une valeur minLength de 3 et une valeur maxLength de 24. Ajoutez comme valeur de la description The name of the Azure storage resource (Le nom de la ressource de stockage Azure).
Le bloc des paramètres doit maintenant ressembler à cet exemple :
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Utilisez le nouveau paramètre dans le bloc
resources
dans les valeursname
etdisplayName
. Le fichier complet ressemble à cet exemple de code :{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } }, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS" } } ], "outputs": {} }
Enregistrez le fichier.
Déployer le modèle ARM paramétré
Ici, vous modifiez le nom du déploiement pour mieux refléter ce que fait ce déploiement et renseignez une valeur pour le nouveau paramètre.
Exécutez les commandes Azure CLI suivantes dans le terminal. Cet extrait de code contient le même code que celui utilisé précédemment, mais le nom du déploiement est changé. Renseignez un nom unique pour le paramètre storageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière unité. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile \
--parameters storageName={your-unique-name}
Exécutez les commandes Azure PowerShell suivantes dans le terminal. Cet extrait de code contient le même code que celui utilisé précédemment, mais le nom du déploiement est changé. Renseignez un nom unique pour le paramètre storageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière unité. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Vérifier votre déploiement
Une fois le déploiement terminé, revenez au portail Azure dans votre navigateur. Accédez à votre groupe de ressources et vérifiez qu’il y a maintenant 3 déploiements réussis. Sélectionnez ce lien.
Notez que les trois déploiements se trouvent dans la liste.
Explorez le déploiement addnameparameter comme vous l’avez fait précédemment.
Ajouter un autre paramètre qui limite les valeurs autorisées
Ici, vous utilisez des paramètres pour limiter les valeurs autorisées pour un paramètre.
Placez le curseur après l’accolade fermante pour le paramètre
storageName
. Ajoutez une virgule, puis sélectionnez Entrée.Entrez à nouveau par et sélectionnez new-parameter.
Remplacez le nouveau paramètre générique par le code suivant :
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Ici, vous répertoriez les valeurs autorisées par ce paramètre. Si le modèle s’exécute avec une valeur non autorisée, le déploiement échoue.
Ajoutez un commentaire à ce paramètre.
Les modèles ARM prennent en charge les commentaires
//
et/* */
.Mettez à jour la section resources de façon à ce qu’elle utilise le paramètre
storageSKU
. Si vous tirez parti de la fonctionnalité IntelliSense de Visual Studio Code, elle facilite cette étape."sku": { "name": "[parameters('storageSKU')]" }
Le fichier complet ressemble à cet exemple de code :
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }
Enregistrez le fichier.
Déployer le modèle ARM
Ici, vous effectuez un déploiement réussi en utilisant un paramètre storageSKU
qui se trouve dans la liste autorisée. Ensuite, vous essayez de déployer le modèle en utilisant un paramètre storageSKU
qui ne figure pas dans la liste autorisée. Le deuxième déploiement échoue comme prévu.
Déployez le modèle en exécutant les commandes suivantes. Renseignez un nom unique pour le paramètre
storageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_GRS storageName={your-unique-name}
Laissez le déploiement se terminer. Ce déploiement est correctement effectué. Votre liste de valeurs autorisées empêchent les utilisateurs de votre modèle de transmettre des valeurs de paramètre qui ne fonctionnent pas pour la ressource. Voyons ce qui se passe lorsque vous fournissez une référence SKU non valide.
Exécutez les commandes suivantes pour déployer le modèle avec un paramètre qui n’est pas autorisé. Ici, vous avez changé le paramètre
storageSKU
en Basic (De base). Renseignez un nom unique pour le paramètrestorageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Basic storageName={your-unique-name}
Échec de ce déploiement. Notez l’erreur.
Déployez le modèle en exécutant les commandes suivantes. Renseignez un nom unique pour le paramètre
storageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Laissez le déploiement se terminer. Ce déploiement est correctement effectué. Votre liste de valeurs autorisées empêchent les utilisateurs de votre modèle de transmettre des valeurs de paramètre qui ne fonctionnent pas pour la ressource. Voyons ce qui se passe lorsque vous fournissez une référence SKU non valide.
Exécutez les commandes suivantes pour déployer le modèle avec un paramètre qui n’est pas autorisé. Ici, vous avez changé le paramètre
storageSKU
en Basic (De base). Renseignez un nom unique pour le paramètrestorageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Échec de ce déploiement. Notez l’erreur.
Ajouter une sortie au modèle ARM
Ici, vous faites un ajout à la section outputs
du modèle ARM pour produire une sortie des points de terminaison pour la ressource de compte de stockage.
Dans le fichier azuredeploy.json dans Visual Studio Code, placez votre curseur entre les accolades dans l’attribut
"outputs":{},
.Sélectionnez Entrée, puis entrez out. Vous obtenez une liste d’extraits de code associés. Sélectionnez new-output. Ils ajoutent une sortie générique au modèle qui ressemble à cet exemple :
"outputs": { "output1": { "type": "string", "value": "value" }
Remplacez "output1" par "storageEndpoint", puis remplacez la valeur de
type
par "object". Remplacez la valeur devalue
par "[reference(parameters('storageName')).primaryEndpoints]". Cette expression est celle que nous avons décrite dans l’unité précédente, qui obtient les données du point de terminaison. Étant donné que nous avons spécifié objet comme type, l’objet est retourné au format JSON."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Enregistrez le fichier.
Déployer le modèle ARM avec une sortie
Ici, vous déployez le modèle et voyez la sortie des points de terminaison au format JSON. Vous devez renseigner un nom unique pour le paramètre storageName
. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’en créer une nouvelle.
Déployez le modèle en exécutant les commandes suivantes. Veillez à remplacer {your-unique-name} par une chaîne qui est unique.
templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addoutputs-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_LRS storageName={your-unique-name}
Notez le résultat.
Déployez le modèle en exécutant les commandes suivantes. Veillez à remplacer {your-unique-name} par une chaîne qui est unique.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Notez le résultat.
Vérifier votre déploiement de sortie
Dans le portail Azure, accédez à votre déploiement addOutputs. Vous pouvez également y trouver votre sortie.