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é.

Diagramme de condition d’utilisation d’un modèle Resource Manager

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 :

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 :

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.

  1. À partir de Visual Studio Code, sélectionnez Fichier>Ouvrir un fichier.

  2. 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
    
  3. Sélectionnez Ouvrir pour ouvrir le fichier.

  4. Il existe six ressources définies par le modèle :

    Il est utile de vérifier les informations de référence sur les modèles avant de personnaliser un modèle.

  5. 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 :

  1. Ouvrez azuredeploy.json dans Visual Studio Code.

  2. Remplacez les trois variables('storageAccountName') par parameters('storageAccountName') dans le modèle entier.

  3. Supprimez la définition de variable suivante :

    Capture d’écran mettant en évidence les définitions de variables que vous devez supprimer.

  4. 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 à :

    Condition d’utilisation de Resource Manager

  5. 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 à :

    Capture d’écran montrant la définition du compte de stockage mise à jour.

  6. 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.

  7. Enregistrez les modifications.

Déployer le modèle

  1. Connectez-vous à Cloud Shell.

  2. 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.

    Fichier de chargement du Cloud Shell du portail Azure

  3. 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 commande cat pour vérifier que le chargement a été correctement effectué.

  4. 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 :