Nasazení skupin prostředků pomocí šablon ARM

Tento článek popisuje, jak nastavit rozsah nasazení na skupinu prostředků. K nasazení použijete šablonu Azure Resource Manager (šablonu ARM). Tento článek také ukazuje, jak v operaci nasazení rozšířit rozsah nad rámec skupiny prostředků.

Tip

Doporučujeme Bicep , protože nabízí stejné funkce jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu Nasazení skupin prostředků.

Podporované prostředky

Většinu prostředků je možné nasadit do skupiny prostředků. Seznam dostupných prostředků najdete v referenčních informacích k šabloně ARM.

Schéma

Pro šablony použijte následující schéma:

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

Pro soubory parametrů použijte:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  ...
}

Příkazy nasazení

K nasazení do skupiny prostředků použijte příkazy nasazení skupiny prostředků.

Pro Azure CLI použijte az deployment group create. Následující příklad nasadí šablonu k vytvoření skupiny prostředků. Skupina prostředků, kterou zadáte v parametru --resource-group , je cílová skupina prostředků.

az deployment group create \
  --name demoRGDeployment \
  --resource-group ExampleGroup \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
  --parameters storageAccountType=Standard_GRS

Podrobnější informace o příkazech nasazení a možnostech nasazení šablon ARM najdete tady:

Obory nasazení

Při nasazování do skupiny prostředků můžete prostředky nasadit do:

  • cílová skupina prostředků z operace
  • jiné skupiny prostředků ve stejném předplatném nebo jiných předplatných
  • libovolné předplatné v tenantovi
  • tenant pro skupinu prostředků

Prostředek rozšíření je možné omezit na cíl, který se liší od cíle nasazení.

Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.

V této části se dozvíte, jak zadat různé obory. Tyto různé obory můžete zkombinovat do jedné šablony.

Rozsah na cílovou skupinu prostředků

Pokud chcete nasadit prostředky do cílového prostředku, přidejte je do oddílu resources šablony.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    resource-group-resources
  ],
  "outputs": {}
}

Příklad šablony najdete v tématu Nasazení do cílové skupiny prostředků.

Obor na skupinu prostředků ve stejném předplatném

Pokud chcete nasadit prostředky do jiné skupiny prostředků ve stejném předplatném, přidejte vnořené nasazení a zahrňte vlastnost resourceGroup . Pokud nezadáte ID předplatného nebo skupinu prostředků, použije se předplatné a skupina prostředků z nadřazené šablony. Před spuštěním nasazení musí existovat všechny skupiny prostředků.

V následujícím příkladu cílí vnořené nasazení na skupinu prostředků s názvem demoResourceGroup.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedDeployment",
      "resourceGroup": "demoResourceGroup",
      "properties": {
        "mode": "Incremental",
        "template": {
          resource-group-resources
        }
      }
    }
  ],
  "outputs": {}
}

Příklad šablony najdete v tématu Nasazení do více skupin prostředků.

Obor na skupinu prostředků v jiném předplatném

Pokud chcete nasadit prostředky do skupiny prostředků v jiném předplatném, přidejte vnořené nasazení a zahrňte subscriptionId vlastnosti a resourceGroup . V následujícím příkladu cílí vnořené nasazení na skupinu prostředků s názvem demoResourceGroup.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedDeployment",
      "subscriptionId": "00000000-0000-0000-0000-000000000000",
      "resourceGroup": "demoResourceGroup",
      "properties": {
        "mode": "Incremental",
        "template": {
          resource-group-resources
        }
      }
    }
  ],
  "outputs": {}
}

Příklad šablony najdete v tématu Nasazení do více skupin prostředků.

Rozsah předplatného

Pokud chcete nasadit prostředky do předplatného, přidejte vnořené nasazení a přidejte subscriptionId vlastnost . Předplatné může být předplatné cílové skupiny prostředků nebo jakékoli jiné předplatné v tenantovi. Nastavte location také vlastnost pro vnořené nasazení.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedDeployment",
      "location": "centralus",
      "subscriptionId": "0000000-0000-0000-0000-000000000000",
      "properties": {
        "mode": "Incremental",
        "template": {
          subscription-resources
        }
      }
    }
  ],
  "outputs": {}
}

Příklad šablony najdete v tématu Vytvoření skupiny prostředků.

Rozsah na tenanta

Pokud chcete v tenantovi vytvářet prostředky, nastavte na scope/. Uživatel, který šablonu nasazuje, musí mít požadovaný přístup k nasazení v tenantovi.

Pokud chcete použít vnořené nasazení, nastavte scope a location.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedDeployment",
      "location": "centralus",
      "scope": "/",
      "properties": {
        "mode": "Incremental",
        "template": {
          tenant-resources
        }
      }
    }
  ],
  "outputs": {}
}

Nebo můžete nastavit rozsah / na pro některé typy prostředků, jako jsou skupiny pro správu.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "mgName": {
      "type": "string",
      "defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Management/managementGroups",
      "apiVersion": "2021-04-01",
      "name": "[parameters('mgName')]",
      "scope": "/",
      "location": "eastus",
      "properties": {}
    }
  ],
  "outputs": {
    "output": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

Další informace najdete v tématu Skupina pro správu.

Nasazení do cílové skupiny prostředků

Pokud chcete nasadit prostředky v cílové skupině prostředků, definujte tyto prostředky v resources části šablony. Následující šablona vytvoří účet úložiště ve skupině prostředků, která je určená v operaci nasazení.

{
  "$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]"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Nasazení do více skupin prostředků

V jedné šabloně ARM můžete provést nasazení do více než jedné skupiny prostředků. Pokud chcete cílit na skupinu prostředků, která se liší od skupiny prostředků nadřazené šablony, použijte vnořenou nebo propojenou šablonu. V rámci typu prostředku nasazení zadejte hodnoty pro ID předplatného a skupinu prostředků, do které chcete vnořenou šablonu nasadit. Skupiny prostředků můžou existovat v různých předplatných.

Poznámka

V jednom nasazení můžete provést nasazení do 800 skupin prostředků . Toto omezení obvykle znamená, že můžete provést nasazení do jedné skupiny prostředků určené pro nadřazenou šablonu a až do 799 skupin prostředků ve vnořených nebo propojených nasazeních. Pokud však nadřazená šablona obsahuje jenom vnořené nebo propojené šablony a sama nenasazuje žádné prostředky, můžete do vnořených nebo propojených nasazení zahrnout až 800 skupin prostředků.

Následující příklad nasadí dva účty úložiště. První účet úložiště se nasadí do skupiny prostředků zadané v operaci nasazení. Druhý účet úložiště se nasadí do skupiny prostředků zadané v parametrech secondResourceGroup a secondSubscriptionID :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "maxLength": 11
    },
    "secondResourceGroup": {
      "type": "string"
    },
    "secondSubscriptionID": {
      "type": "string",
      "defaultValue": ""
    },
    "secondStorageLocation": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "firstStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "secondStorageName": "[concat(parameters('storagePrefix'), uniqueString(parameters('secondSubscriptionID'), parameters('secondResourceGroup')))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('firstStorageName')]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "nestedTemplate",
      "resourceGroup": "[parameters('secondResourceGroup')]",
      "subscriptionId": "[parameters('secondSubscriptionID')]",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.Storage/storageAccounts",
              "apiVersion": "2021-04-01",
              "name": "[variables('secondStorageName')]",
              "location": "[parameters('secondStorageLocation')]",
              "sku": {
                "name": "Standard_LRS"
              },
              "kind": "Storage",
              "properties": {
              }
            }
          ]
        },
        "parameters": {}
      }
    }
  ]
}

Pokud nastavíte resourceGroup název skupiny prostředků, která neexistuje, nasazení selže.

Pokud chcete otestovat předchozí šablonu a zobrazit výsledky, použijte PowerShell nebo Azure CLI.

Pokud chcete nasadit dva účty úložiště do dvou skupin prostředků ve stejném předplatném, použijte:

firstRG="primarygroup"
secondRG="secondarygroup"

az group create --name $firstRG --location southcentralus
az group create --name $secondRG --location eastus
az deployment group create \
  --name ExampleDeployment \
  --resource-group $firstRG \
  --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
  --parameters storagePrefix=tfstorage secondResourceGroup=$secondRG secondStorageLocation=eastus

Pokud chcete nasadit dva účty úložiště do dvou předplatných, použijte:

firstRG="primarygroup"
secondRG="secondarygroup"

firstSub="<first-subscription-id>"
secondSub="<second-subscription-id>"

az account set --subscription $secondSub
az group create --name $secondRG --location eastus

az account set --subscription $firstSub
az group create --name $firstRG --location southcentralus

az deployment group create \
  --name ExampleDeployment \
  --resource-group $firstRG \
  --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
  --parameters storagePrefix=storage secondResourceGroup=$secondRG secondStorageLocation=eastus secondSubscriptionID=$secondSub

Vytvoření skupiny prostředků

Z nasazení skupiny prostředků můžete přepnout na úroveň předplatného a vytvořit skupinu prostředků. Následující šablona nasadí účet úložiště do cílové skupiny prostředků a vytvoří novou skupinu prostředků v zadaném předplatném.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "maxLength": 11
    },
    "newResourceGroupName": {
      "type": "string"
    },
    "nestedSubscriptionID": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "storageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "demoSubDeployment",
      "location": "westus",
      "subscriptionId": "[parameters('nestedSubscriptionID')]",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.Resources/resourceGroups",
              "apiVersion": "2021-04-01",
              "name": "[parameters('newResourceGroupName')]",
              "location": "[parameters('location')]",
              "properties": {}
            }
          ],
          "outputs": {}
        }
      }
    }
  ]
}

Další kroky