Tutoriel : Utiliser les fichiers de paramètres pour déployer votre modèle ARM

Dans ce tutoriel, vous apprenez à utiliser des fichiers de paramètres pour stocker les valeurs que vous transmettez pendant le déploiement. Dans les tutoriels précédents, vous avez utilisé des paramètres incorporés à votre commande de déploiement. Cette approche fonctionnait pour tester votre modèle Azure Resource Manager (modèle ARM) mais, lors de l’automatisation des déploiements, il peut être plus facile de passer un ensemble de valeurs pour votre environnement. Les fichiers de paramètres facilitent la création de package des valeurs de paramètre pour un environnement spécifique. Dans ce tutoriel, vous allez créer des fichiers de paramètres pour les environnements de développement et de production. Cette instruction prend 12 minutes.

Prérequis

Nous vous recommandons de suivre le tutoriel sur les étiquettes, mais ce n’est pas obligatoire.

Vous avez besoin de Visual Studio Code avec l’extension Outils Resource Manager ainsi que d’Azure PowerShell ou Azure CLI (interface de ligne de commande Azure). Pour plus d’informations, consultez les outils de modèle.

Vérifier le modèle

Votre modèle contient de nombreux paramètres que vous pouvez fournir pendant le déploiement. À la fin du précédent tutoriel, votre modèle présentait le fichier JSON suivant :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Ce modèle fonctionne bien, mais vous souhaitez maintenant gérer sans peine les paramètres que vous transmettez pour le modèle.

Ajouter des fichiers de paramètres

Les fichiers de paramètres sont des fichiers JSON dont la structure est similaire à celle de votre modèle. Dans le fichier, vous fournissez les valeurs de paramètre que vous souhaitez transmettre pendant le déploiement.

Dans le fichier de paramètres, vous fournissez des valeurs pour les paramètres de votre modèle. Le nom de chaque paramètre dans votre fichier de paramètres doit correspondre au nom d’un paramètre dans votre modèle. Le nom ne respecte pas la casse, mais pour voir facilement les valeurs correspondantes, nous vous recommandons de faire correspondre la casse du modèle.

Vous n’avez pas besoin de fournir une valeur pour chaque paramètre. Si un paramètre non spécifié a une valeur par défaut, cette valeur est utilisée pendant le déploiement. Si un paramètre n’a pas de valeur par défaut et qu’il n’est pas spécifié dans le fichier de paramètres, vous êtes invité à fournir une valeur lors du déploiement.

Vous ne pouvez pas spécifier un nom de paramètre dans votre fichier de paramètres qui ne correspond pas à un nom de paramètre dans le modèle. Vous obtenez une erreur quand vous fournissez des paramètres inconnus.

Dans Visual Studio Code, créez un fichier avec le contenu suivant. Enregistrez le fichier sous le nom azuredeploy.parameters.dev.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Il s’agit de votre fichier de paramètres pour l’environnement de développement. Notez qu’il utilise Standard_LRS pour le compte de stockage, nomme les ressources avec un préfixe dev et définit l’étiquette Environment sur Dev.

Encore une fois, créez un fichier avec le contenu suivant. Enregistrez le fichier sous le nom azuredeploy.parameters.prod.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Il s’agit de votre fichier de paramètres pour l’environnement de production. Notez qu’il utilise Standard_GRS pour le compte de stockage, nomme les ressources avec un préfixe contoso et définit l’étiquette Environment sur Production. Dans un environnement de production réel, vous pouvez également être amené à utiliser un service d’application avec une référence SKU payante. Toutefois, pour les besoins de ce tutoriel, nous allons continuer à utiliser cette référence SKU.

Déployer un modèle

Utilisez Azure CLI ou Azure PowerShell pour déployer le modèle.

En guise de test final pour votre modèle, vous allez créer deux nouveaux groupes de ressources. L’un pour l’environnement de développement, et l’autre pour l’environnement de production.

Pour les variables de modèle et de paramètre, remplacez {path-to-the-template-file}, {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json} et les accolades {} par les chemins à vos fichiers de modèle et de paramètres.

Tout d’abord, nous allons procéder au déploiement sur l’environnement de développement.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

À présent, nous effectuons le déploiement sur l’environnement de production.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Notes

En cas d’échec du déploiement, utilisez le commutateur verbose pour obtenir des informations sur les ressources que vous créez. Utilisez le commutateur debug pour obtenir des informations supplémentaires sur le débogage.

Vérifier le déploiement

Vous pouvez vérifier le déploiement en explorant les groupes de ressources à partir du portail Azure.

  1. Connectez-vous au portail Azure.
  2. Dans le menu de gauche, sélectionnez Groupes de ressources.
  3. Vous voyez les deux nouveaux groupes de ressources que vous déployez dans ce tutoriel.
  4. Sélectionnez un groupe de ressources et affichez les ressources déployées. Remarquez qu’elles correspondent aux valeurs que vous avez spécifiées dans votre fichier de paramètres pour cet environnement.

Nettoyer les ressources

  1. Dans le portail Azure, sélectionnez Groupes de ressources dans le menu de gauche.

  2. Sélectionnez le nom du groupe de ressources doté d’un lien hypertexte en regard de la case à cocher. Si vous effectuez cette série, vous avez trois groupes de ressources à supprimer : myResourceGroup, myResourceGroupDev et myResourceGroupProd.

  3. Sélectionnez l’icône Supprimer le groupe de ressources dans le menu supérieur.

    Attention

    La suppression d’un groupe de ressources est irréversible.

  4. Tapez le nom du groupe de ressources dans la fenêtre indépendante qui s’affiche, puis sélectionnez Supprimer.

Étapes suivantes

Félicitations ! Cette présentation du déploiement des modèles sur Azure est terminée. Faites-nous part de vos réflexions et de vos suggestions dans la section des commentaires.

La série de tutoriels suivante décrit plus en détail le déploiement de modèles.