Gegevenstypen in ARM-sjablonen

In dit artikel worden de gegevenstypen beschreven die worden ondersteund in Azure Resource Manager-sjablonen (ARM-sjablonen).

Ondersteunde typen

In een ARM-sjabloon kunt u deze gegevenstypen gebruiken:

  • matrix
  • bool
  • int
  • object
  • secureObject
  • securestring
  • tekenreeks

Matrices

Matrices beginnen met een linkerhaak ([) en eindigen met een rechterhaak (]). Een matrix kan worden gedeclareerd in één regel of meerdere regels. Elk element wordt gescheiden door een komma.

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

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

De elementen van een matrix kunnen hetzelfde type of verschillende typen zijn.

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

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

Booleaans

Wanneer u booleaanse waarden opgeeft, gebruikt true u of false. Plaats de waarde niet tussen aanhalingstekens.

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

Gehele getallen

Gebruik bij het opgeven van gehele getallen geen aanhalingstekens.

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

Voor gehele getallen die als inlineparameters worden doorgegeven, kan het bereik van waarden worden beperkt door de SDK of het opdrachtregelprogramma dat u gebruikt voor implementatie. Wanneer u bijvoorbeeld PowerShell gebruikt om een sjabloon te implementeren, kunnen gehele getallen variëren van -2147483648 tot 2147483647. Als u deze beperking wilt voorkomen, geeft u grote gehele getallen op in een parameterbestand. Resourcetypen passen hun eigen limieten toe voor gehele getallen.

Objecten

Objecten beginnen met een linker brace ({) en eindigen met een rechter brace (}). Elke eigenschap in een object bestaat uit key en value. De key en value staan tussen dubbele aanhalingstekens en gescheiden door een dubbele punt (:). Elke eigenschap wordt gescheiden door een komma.

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

U kunt een eigenschap ophalen uit een object met punt notatie.

{
    "$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]"
        }
    }
}

In JSON is een object een niet-geordende verzameling van nul of meer sleutel-waardeparen. De volgorde kan verschillen, afhankelijk van de implementaties. De functie Bicep items() sorteert bijvoorbeeld de objecten in alfabetische volgorde. Op andere plaatsen kan de oorspronkelijke volgorde behouden blijven. Vanwege dit niet-determinisme vermijdt u veronderstellingen over de volgorde van objectsleutels bij het schrijven van code, die communiceert met implementatieparameters en uitvoer.

Tekenreeksen

Tekenreeksen worden gemarkeerd met dubbele aanhalingstekens.

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

Tekenreeksen en objecten beveiligen

Beveiligde tekenreeks maakt gebruik van dezelfde indeling als tekenreeks en beveiligd object gebruikt dezelfde indeling als het object. Wanneer u een parameter instelt op een beveiligde tekenreeks of beveiligd object, wordt de waarde van de parameter niet opgeslagen in de implementatiegeschiedenis en wordt deze niet geregistreerd. Als u deze beveiligde waarde echter instelt op een eigenschap die geen veilige waarde verwacht, wordt de waarde niet beveiligd. Als u bijvoorbeeld een beveiligde tekenreeks instelt op een tag, wordt die waarde opgeslagen als tekst zonder opmaak. Gebruik beveiligde tekenreeksen voor wachtwoorden en geheimen.

In het volgende voorbeeld ziet u twee beveiligde parameters.

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

Notitie

Gebruik geen veilige tekenreeksen of objecten als uitvoerwaarden. Als u een beveiligde waarde opneemt als uitvoerwaarde, wordt de waarde niet weergegeven in de implementatiegeschiedenis en kan deze niet worden opgehaald uit een andere sjabloon. Sla in plaats daarvan de veilige waarde op in een sleutelkluis en geef deze door als een parameter uit de sleutelkluis.

Volgende stappen

Zie De structuur en syntaxis van ARM-sjablonen begrijpen voor meer informatie over de syntaxis van de sjabloon.