Explorer les composants de modèle

Effectué

Les modèles Azure Resource Manager sont écrits en JSON, ce qui vous permet d’exprimer des données stockées sous la forme d’un objet (par exemple une machine virtuelle) dans du texte.

Un document JSON est essentiellement une collection de paires clé-valeur. Chaque clé est une chaîne dont les valeurs peuvent être :

  • Chaîne.
  • Nombre.
  • Expression booléenne.
  • Une liste de valeurs.
  • Un objet (qui est une collection d’autres paires clé-valeur).

Un modèle Resource Manager peut contenir des sections exprimées en notation JSON, mais qui ne sont pas liées au langage JSON lui-même :

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

Examinons chacune de ces sections un peu plus en détail.

Paramètres

Dans cette section, vous spécifiez les valeurs qui sont configurables quand le modèle s’exécute.

Par exemple, vous pouvez autoriser les utilisateurs du modèle à définir un nom d’utilisateur, un mot de passe ou un nom de domaine.

Voici un exemple qui montre deux paramètres, un pour le nom d’utilisateur d’une machine virtuelle et un pour son mot de passe :

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Variables

Dans cette section, vous définissez les valeurs qui sont utilisées dans le modèle.

Les variables peuvent vous aider à simplifier la gestion de vos modèles.

Par exemple, vous pouvez définir un nom de compte de stockage une fois comme variable et utiliser cette variable dans le modèle.

Si le nom de compte de stockage change, vous devez mettre à jour uniquement la variable.

Voici un exemple montrant quelques variables qui décrivent les fonctionnalités réseau d’une machine virtuelle :

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Fonctions

Dans cette section, vous définissez les procédures que vous ne voulez pas répéter dans le modèle.

Comme les variables, les fonctions peuvent vous aider à simplifier la gestion de vos modèles.

Dans cet exemple, une fonction est définie pour créer un nom unique à utiliser pour la création de ressources ayant des exigences de nommage global unique :

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Ressources

Dans cette section, vous définissez les ressources Azure qui composent votre déploiement.

Voici un exemple qui crée une ressource d’adresse IP publique :

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Ici, le type de ressource est Microsoft.Network/publicIPAddresses.

Le nom est lu dans la section des variables, et la localisation ou la région Azure est lue à partir de la section des paramètres.

Étant donné que les types de ressource peuvent changer au fil du temps, apiVersion fait référence à la version du type de ressource que vous souhaitez utiliser.

Quand les types de ressources évoluent, vous pouvez modifier vos modèles pour utiliser les dernières fonctionnalités.

Sorties

Dans cette section, vous définissez toutes les informations que vous voulez recevoir quand le modèle s’exécute.

Par exemple, vous pouvez recevoir l’adresse IP de votre machine virtuelle ou son nom de domaine complet (FQDN), les informations que vous ne connaissez pas avant l’exécution du déploiement.

Voici un exemple montrant une sortie nommée hostname.

La valeur du FQDN est lue dans les paramètres d’adresse IP publique de la machine virtuelle :

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}