Tutoriel : Utiliser une condition dans des modèles ARM
Découvrez comment déployer des ressources Azure en fonction des conditions d’un modèle Azure Resource Manager (modèle ARM).
Dans le didacticiel Définir l’ordre de déploiement des ressources, vous créez une machine virtuelle, un réseau virtuel et d’autres ressources dépendantes, y compris un compte de stockage. Plutôt que de créer un compte de stockage à chaque fois, vous laissez le choix aux utilisateurs de créer un compte de stockage ou d’utiliser un compte de stockage existant. Vous définissez pour cela un paramètre supplémentaire. Si la valeur du paramètre est new, un compte de stockage est créé. Sinon, un compte de stockage existant avec le nom fourni est utilisé.
Ce tutoriel décrit les tâches suivantes :
- Ouvrir un modèle de démarrage rapide
- Modifier le modèle
- Déployer le modèle
- Nettoyer les ressources
Ce tutoriel traite uniquement d’un scénario de base d’utilisation de conditions. Pour plus d'informations, consultez les pages suivantes :
- Structure de fichiers de modèle : Condition.
- Déployer une ressource de manière conditionnelle dans un modèle ARM.
- Fonction de modèle : If.
- Fonctions de comparaison pour les modèles ARM
Pour suivre un module Learn qui traite des conditions, consultez Gérer des déploiements cloud complexes à l’aide des fonctionnalités avancées de modèle ARM.
Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Prérequis
Pour effectuer ce qui est décrit dans cet article, vous avez besoin des éléments suivants :
Visual Studio Code avec l’extension Outils Resource Manager. Consultez Démarrage rapide : Créer des modèles ARM avec Visual Studio Code.
Pour une sécurité optimale, utilisez un mot de passe généré pour le compte administrateur de la machine virtuelle. Vous pouvez utiliser Azure Cloud Shell pour exécuter la commande suivante dans PowerShell ou Bash :
openssl rand -base64 32
Pour plus d’informations, exécutez
man openssl rand
pour ouvrir la page manuelle.Azure Key Vault a été conçu pour protéger les clés et autres secrets de chiffrement. Pour plus d’informations, consultez Didacticiel : Intégrer Azure Key Vault à un déploiement de modèle ARM. Nous vous recommandons également de mettre à jour votre mot de passe tous les trois mois.
Ouvrir un modèle de démarrage rapide
Le référentiel Modèles de démarrage rapide Azure contient les modèles ARM. Au lieu de créer un modèle à partir de zéro, vous pouvez chercher un exemple de modèle et le personnaliser. Le modèle utilisé dans ce didacticiel se nomme Déployer une machine virtuelle Windows simple.
À partir de Visual Studio Code, sélectionnez Fichier>Ouvrir un fichier.
Collez l’URL suivante dans Nom de fichier :
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Sélectionnez Ouvrir pour ouvrir le fichier.
Il existe six ressources définies par le modèle :
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Il est utile de vérifier les informations de référence sur les modèles avant de personnaliser un modèle.
Sélectionnez Fichier>Enregistrer sous pour enregistrer une copie du fichier sur votre ordinateur local avec le nom azuredeploy.json.
Modifier le modèle
Apportez deux modifications au modèle existant :
- Ajoutez un paramètre de nom de compte de stockage. Les utilisateurs peuvent spécifier un nouveau nom de compte de stockage ou un nom de compte de stockage existant.
- Ajoutez un nouveau paramètre appelé
newOrExisting
. Le déploiement utilise ce paramètre pour déterminer s’il faut créer un compte de stockage ou utiliser un compte de stockage existant.
Voici la procédure pour apporter les modifications :
Ouvrez azuredeploy.json dans Visual Studio Code.
Remplacez les trois
variables('storageAccountName')
parparameters('storageAccountName')
dans le modèle entier.Supprimez la définition de variable suivante :
Ajoutez les deux paramètres suivants au début de la section des paramètres :
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Appuyez sur Alt+Maj+F pour mettre en forme le modèle dans Visual Studio Code.
La définition de paramètres mise à jour ressemble à :
Ajoutez la ligne suivante au début de la définition du compte de stockage.
"condition": "[equals(parameters('newOrExisting'),'new')]",
La condition vérifie la valeur du paramètre
newOrExisting
. Si la valeur du paramètre est nouveau, le déploiement crée le compte de stockage.La définition du compte de stockage mise à jour ressemble à :
Mettez à jour la propriété
storageUri
de la définition de ressource de machine virtuelle avec la valeur suivante :"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Cette modification est nécessaire lorsque vous utilisez un compte de stockage existant sous un autre groupe de ressources.
Enregistrez les modifications.
Déployer le modèle
Connectez-vous à Cloud Shell.
Choisissez votre environnement préféré en sélectionnant PowerShell ou Bash (pour CLI) en haut à gauche. Il est nécessaire de redémarrer l’interpréteur de commandes lors d’un tel changement.
Sélectionnez Charger/Télécharger des fichiers, puis Charger. Consultez la capture d’écran précédente. Sélectionnez le fichier que vous avez enregistré dans la section précédente. Après avoir chargé le fichier, vous pouvez utiliser la commande
ls
et la commandecat
pour vérifier que le chargement a été correctement effectué.Exécutez le script PowerShell suivant pour déployer le modèle.
Important
Le nom du compte de stockage doit être unique dans Azure. Le nom ne doit contenir que des lettres minuscules ou des chiffres. Il ne doit pas compter plus de 24 caractères. Le nom du compte de stockage est le nom du projet suivi du suffixe store. Vérifiez que le nom du projet et le nom du compte de stockage généré respectent les critères de nommage des comptes de stockage.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Notes
Le déploiement échoue si
newOrExisting
est nouveau, mais le compte de stockage avec le nom de compte de stockage spécifié déjà existe.
Essayez d’effectuer un autre déploiement avec newOrExisting
défini surexisting et spécifiez un compte de stockage existant. Pour créer un compte de stockage au préalable, consultez Créer un compte de stockage.
Nettoyer les ressources
Lorsque vous n’en avez plus besoin, nettoyez les ressources Azure que vous avez déployées en supprimant le groupe de ressources. Pour supprimer le groupe de ressources, sélectionnez Essayer afin d’ouvrir Cloud Shell. Pour coller le script PowerShell, cliquez sur le volet de l’interpréteur de commandes, puis sélectionnez Coller.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Étapes suivantes
Dans ce didacticiel, vous avez développé un modèle qui permet aux utilisateurs de choisir de créer un compte de stockage ou d’utiliser un compte de stockage existant. Pour savoir comment récupérer des secrets dans Azure Key Vault et utiliser les secrets comme mots de passe dans le déploiement de modèle, consultez :