Types de données dans les modèles ARM

Cet article décrit les types de données pris en charge dans les modèles Azure Resource Manager (modèles ARM).

Types pris en charge

Dans un modèle ARM, vous pouvez utiliser les types de données suivants :

  • tableau
  • bool
  • int
  • object
  • secureObject
  • securestring
  • string

Tableaux

Les tableaux commencent par un crochet ouvrant ([) et se terminent par un crochet fermant (]). Il est possible de déclarer un tableau dans une ou plusieurs lignes. Les éléments sont séparés par des virgules.

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

Les éléments d’un tableau peuvent être du même type ou de types différents.

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

valeurs booléennes

Quand vous spécifiez des valeurs booléennes, utilisez true ou false. N’entourez pas la valeur de guillemets.

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

Entiers

Quand vous spécifiez des valeurs entières, n’utilisez pas de guillemets.

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

Pour les entiers passés comme paramètres inclus, la plage de valeurs peut être limitée par le SDK ou l’outil en ligne de commande que vous utilisez pour le déploiement. Par exemple, si vous utilisez PowerShell pour déployer un modèle, les types d’entiers peuvent être compris entre -2147483648 et 2147483647. Pour éviter cette limite, spécifiez des valeurs entières élevées dans un fichier de paramètres. Les types de ressources appliquent leurs propres limites aux propriétés d’entiers.

Objets

Les objets commencent par une accolade ouvrante ({) et se terminent par une accolade fermante (}). Chaque propriété d’un objet se compose d’une key et d’une value. La key et la value sont placées entre guillemets doubles et séparées par un signe deux-points (:). Les propriétés sont séparées par des virgules.

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

Vous pouvez obtenir une propriété à partir d’un objet avec une notation point.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

Dans JSON, un objet est une collection non ordonnée de zéro ou plus paires clé/valeur. L’ordre peut être différent selon les implémentations. Par exemple, la fonction Bicep items() trie les objets par ordre alphabétique. Dans d’autres endroits, l’ordre d’origine peut être conservé. En raison de ce non-déterminisme, évitez de faire des hypothèses sur l’ordre des clés des objets lors de l’écriture du code, ce qui interagit avec les paramètres et les sorties des déploiements.

Chaînes

Les chaînes sont marquées par des guillemets doubles.

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

Sécuriser les chaînes et objets

La chaîne sécurisée utilise le même format que la chaîne, et l’objet sécurisé utilise le même format que l’objet. Lorsque vous définissez un paramètre sur une chaîne sécurisée ou un objet sécurisé, la valeur du paramètre n’est pas enregistrée dans l’historique de déploiement et n’est pas consignée. Toutefois, si vous définissez cette valeur sécurisée sur une propriété qui n’attend pas une valeur sécurisée, la valeur n’est pas protégée. Par exemple, si vous définissez une chaîne sécurisée sur une balise, cette valeur est stockée sous forme de texte brut. Utilisez des chaînes sécurisées pour les mots de passe et les secrets.

L’exemple suivant présente deux paramètres sécurisés.

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

Notes

N’utilisez pas de chaînes sécurisées ou d’objets comme valeurs de sortie. Si vous incluez une valeur sécurisée en tant que valeur de sortie, la valeur n’est pas affichée dans l’historique de déploiement et ne peut pas être récupérée à partir d’un autre modèle. Au lieu de cela, enregistrez la valeur sécurisée dans un coffre de clés et passez-la en tant que paramètre à partir du coffre de clés.

Étapes suivantes

Pour découvrir la syntaxe du modèle, consultez Comprendre la structure et la syntaxe des modèles ARM.