Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak określić zakres wdrożenia w grupie zasobów. Do wdrożenia użyjesz szablonu usługi Azure Resource Manager (szablonu usługi ARM). W tym artykule pokazano również, jak rozszerzyć zakres poza grupę zasobów w operacji wdrażania.
Wskazówka
Zalecamy Bicep, ponieważ oferuje te same możliwości co szablony ARM, a składnia jest łatwiejsza w użyciu. Aby dowiedzieć się więcej, zobacz Wdrożenia grup zasobów.
Obsługiwane zasoby
Większość zasobów można wdrożyć do grupy zasobów. Aby uzyskać listę dostępnych zasobów, zobacz Odwołanie do szablonu ARM.
Schemat
W przypadku szablonów użyj następującego schematu:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
}
W przypadku plików parametrów użyj:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Polecenia wdrażania
Aby wdrożyć do grupy zasobów, użyj poleceń do wdrażania grup zasobów.
W przypadku Azure CLI użyj polecenia az deployment group create. Poniższy przykład umożliwia wdrożenie szablonu w celu utworzenia grupy zasobów. Grupa zasobów określona w parametrze --resource-group
jest docelową grupą zasobów.
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
Aby uzyskać bardziej szczegółowe informacje o poleceniach wdrażania i opcjach wdrażania szablonów usługi ARM, zobacz:
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i witryny Azure Portal
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu wiersza polecenia platformy Azure
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i programu Azure PowerShell
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu API REST usługi Azure Resource Manager
- Użyj przycisku wdrażania, aby wdrożyć szablony z repozytorium GitHub
- Wdrażanie szablonów usługi ARM z poziomu usługi Cloud Shell
Zakresy wdrażania
Podczas wdrażania w grupie zasobów można wdrożyć zasoby w:
- docelowa grupa zasobów operacji
- inne grupy zasobów w tej samej subskrypcji lub innych subskrypcjach
- dowolna subskrypcja w dzierżawie
- dzierżawa dla grupy zasobów
Jedyne zabronione przejścia zakresu mają miejsce z grupy zasobów do grupy zarządzania lub z subskrypcji do grupy zarządzania.
Zasób rozszerzenia może być o określonym zakresie dla miejsca docelowego, który różni się od docelowego wdrożenia.
Użytkownik wdrażający szablon musi mieć dostęp do określonego zakresu.
W tej sekcji przedstawiono sposób określania różnych zakresów. Te różne zakresy można połączyć w jednym szablonie.
Zakres docelowej grupy zasobów
Aby wdrożyć zasoby w zasobie docelowym, dodaj te zasoby do sekcji zasobów szablonu.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
resource-group-resources
],
"outputs": {}
}
Przykładowy szablon można znaleźć w temacie Deploy to target resource group (Wdrażanie w docelowej grupie zasobów).
Zakres do grupy zasobów w tej samej subskrypcji
Aby wdrożyć zasoby do innej grupy zasobów w ramach tej samej subskrypcji, dodaj zagnieżdżone wdrożenie i uwzględnij właściwość resourceGroup
. Jeśli nie określisz identyfikatora subskrypcji lub grupy zasobów, zostanie użyta subskrypcja i grupa zasobów z szablonu nadrzędnego. Wszystkie grupy zasobów muszą istnieć przed uruchomieniem wdrożenia.
W poniższym przykładzie zagnieżdżone wdrożenie jest przeznaczone dla grupy zasobów o nazwie 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": {}
}
Aby zapoznać się z przykładowym szablonem, zobacz Wdrażanie w wielu grupach zasobów.
Zakres do grupy zasobów w innej subskrypcji
Aby wdrożyć zasoby w grupie zasobów w innej subskrypcji, dodaj zagnieżdżone wdrożenie i uwzględnij właściwości subscriptionId
oraz resourceGroup
. W poniższym przykładzie zagnieżdżone wdrożenie jest przeznaczone dla grupy zasobów o nazwie 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": {}
}
Aby zapoznać się z przykładowym szablonem, zobacz Wdrażanie w wielu grupach zasobów.
Zakres subskrypcji
Aby wdrożyć zasoby w subskrypcji, dodaj zagnieżdżone wdrożenie i dołącz właściwość subscriptionId
. Subskrypcja może dotyczyć docelowej grupy zasobów lub dowolnej innej subskrypcji w kontekście najemcy. Ponadto ustaw location
atrybut zagnieżdżonego wdrożenia.
{
"$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": {}
}
Aby zapoznać się z przykładowym szablonem, zobacz Tworzenie grupy zasobów.
Zakres dla najemcy
Aby utworzyć zasoby w dzierżawie, ustaw wartość scope
/
. Użytkownik wdrażający szablon musi mieć wymagany dostęp do wdrażania na poziomie dzierżawy.
Aby użyć zagnieżdżonego wdrożenia, ustaw i scope
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": {}
}
Można też ustawić zakres na /
dla niektórych typów zasobów, takich jak grupy zarządzania.
{
"$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')]"
}
}
}
Aby uzyskać więcej informacji, zobacz Grupa zarządzania.
Wdrażanie w docelowej grupie zasobów
Aby wdrożyć zasoby w docelowej grupie zasobów, zdefiniuj te zasoby w resources
sekcji szablonu. Poniższy szablon tworzy konto magazynu w grupie zasobów określonej w operacji wdrażania.
{
"$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]"
}
}
}
Wdrażaj w wielu grupach zasobów
Możesz wdrożyć więcej niż jedną grupę zasobów za pomocą jednego szablonu ARM. Aby zastosować inną grupę zasobów niż ta przeznaczona dla szablonu nadrzędnego, użyj szablonu zagnieżdżonego lub połączonego. W ramach typu zasobu wdrożenia określ wartości identyfikatora subskrypcji i grupy zasobów, do których ma zostać wdrożony szablon zagnieżdżony. Grupy zasobów mogą istnieć w różnych subskrypcjach.
Uwaga / Notatka
W jednym wdrożeniu można wdrożyć 800 grup zasobów . Zazwyczaj to ograniczenie oznacza, że można wdrożyć w jednej grupie zasobów określonej dla szablonu nadrzędnego i maksymalnie 799 grup zasobów w zagnieżdżonych lub połączonych wdrożeniach. Jeśli jednak szablon nadrzędny zawiera tylko zagnieżdżone lub połączone szablony i nie wdraża żadnych zasobów, możesz uwzględnić maksymalnie 800 grup zasobów w zagnieżdżonych lub połączonych wdrożeniach.
W poniższym przykładzie wdrożono dwa konta magazynu. Pierwsze konto magazynu jest wdrażane w grupie zasobów określonej w operacji wdrażania. Drugie konto magazynu jest wdrażane do grupy zasobów określonej w parametrach secondResourceGroup
i 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": {}
}
}
]
}
Jeśli ustawisz resourceGroup
nazwę grupy zasobów, która nie istnieje, wdrożenie zakończy się niepowodzeniem.
Aby przetestować poprzedni szablon i wyświetlić wyniki, użyj programu PowerShell lub interfejsu wiersza polecenia platformy Azure.
Aby wdrożyć dwa konta magazynowe w dwóch grupach zasobów w tej samej subskrypcji, użyj:
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
Aby wdrożyć dwa konta magazynowe w dwóch subskrypcjach, użyj następującego polecenia:
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
Utwórz grupę zasobów
W ramach wdrożenia grupy zasobów można przełączyć się na poziom subskrypcji i utworzyć grupę zasobów. Poniższy szablon wdraża konto magazynowe do docelowej grupy zasobów oraz tworzy nową grupę zasobów w określonej subskrypcji.
{
"$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": {}
}
}
}
]
}
Dalsze kroki
- Aby zapoznać się z przykładem wdrażania ustawień obszaru roboczego dla usługi Microsoft Defender for Cloud, zobacz deployASCwithWorkspaceSettings.json.