Sdílet prostřednictvím


Deklarace prostředků v šablonách ARM

Pokud chcete prostředek nasadit prostřednictvím šablony Azure Resource Manageru (šablona ARM), přidáte deklaraci prostředku. resources Použijte pole v šabloně JSON.

languageVersion 2.0 vytvoří seznam vylepšení šablon JSON ARM, jako je změna deklarace prostředků z pole na objekt. Většina ukázek uvedených v tomto článku stále používá resources pole. Informace specifické pro languageVersion 2.0 naleznete v tématu Použití symbolického názvu.

Poznámka:

Aktuální verze rozšíření Nástroje Azure Resource Manageru pro Visual Studio Code nerozpozná vylepšení jazyka LanguageVersion 2.0.

Tip

Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v deklaraci prostředku.

V šabloně jste omezeni na 800 prostředků. Další informace najdete v tématu Omezení šablon.

Nastavení typu a verze prostředku

Při přidávání prostředku do šablony začněte nastavením typu prostředku a verze rozhraní API. Tyto hodnoty určují další vlastnosti, které jsou pro prostředek k dispozici.

Následující příklad ukazuje, jak nastavit typ prostředku a verzi rozhraní API pro účet úložiště. Příklad nezobrazuje úplnou deklaraci prostředku.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    ...
  }
]

Nastavit název prostředku

Každý prostředek má název. Při nastavování názvu prostředku věnujte pozornost pravidlům a omezením názvů prostředků.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    ...
  }
]

Nastavení umístění

Mnoho prostředků vyžaduje umístění. Můžete určit, jestli prostředek potřebuje umístění buď prostřednictvím technologie IntelliSense, nebo odkazu na šablonu. Následující příklad přidá parametr umístění, který se používá pro účet úložiště.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    "location": "[parameters('location')]",
    ...
  }
]

Další informace najdete v tématu Nastavení umístění prostředků v šabloně ARM.

Nastavení značek

Značky můžete použít u prostředku během nasazení. Značky pomáhají logicky uspořádat nasazené prostředky. Příklady různých způsobů, jak můžete určit značky, najdete v tématu Značky šablony ARM.

Nastavení vlastností specifických pro prostředek

Předchozí vlastnosti jsou obecné pro většinu typů prostředků. Po nastavení těchto hodnot musíte nastavit vlastnosti specifické pro typ prostředku, který nasazujete.

Pomocí intellisense nebo odkazu na šablonu určete, které vlastnosti jsou k dispozici a které jsou požadovány. Následující příklad nastaví zbývající vlastnosti účtu úložiště.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

Použít symbolický název

V Bicep má každá definice prostředku symbolický název. Symbolický název slouží k odkazování na prostředek z ostatních částí souboru Bicep. Pokud chcete podporovat symbolický název v šablonách JSON ARM, přidejte languageVersion s verzí 2.0a změňte definici prostředku z pole na objekt. Pokud languageVersion je zadán pro šablonu, musí být pro prostředky kořenové úrovně zadán symbolický název. Příklad:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  ]
}

Předchozí JSON lze zapsat do následujícího formátu JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "aks": {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  }
}

V symbolických názvech se rozlišují malá a velká písmena. Povolené znaky pro symbolické názvy jsou písmena, číslice a _. Symbolické názvy musí být v šabloně jedinečné, ale můžou se překrývat s názvy proměnných, názvy parametrů a výstupními názvy v šabloně. V následujícím příkladu má symbolický název prostředku účtu úložiště stejný název jako výstup.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": {
    "myStorage": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    }
  },
  "outputs": {
    "myStorage":{
      "type": "object",
      "value": "[reference('myStorage')]"
    }
  }
}

Referenční funkce může použít symbolický název prostředku, jak je znázorněno v předchozím příkladu. Referenční funkce už nemůže použít název prostředku, reference(parameters('storageAccountName')) například není povolený.

Pokud se prostředek Deployments používá v nasazení symbolického názvu, použijte apiVersion 2020-09-01 nebo novější.

Deklarace existujících prostředků

Pomocí languageVersion 2.0 symbolického názvu deklarace prostředku můžete deklarovat existující prostředky. Vlastnost "existing": true prostředku nejvyšší úrovně způsobí, že SE ARM místo nasazení prostředku načte, jak je znázorněno v následujícím příkladu:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "languageVersion": "2.0",

  "resources": {
    "storageAccount": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "storageacct",
      "existing": true
    }
  },
  "outputs": {
    "saBlocksPlaintext": {
      "type": "bool",
      "value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
    }
  }
}

Existující prostředky nemusí definovat žádné jiné vlastnosti než type, apiVersiona name.

Další kroky