Előfizetések üzembe helyezése ARM-sablonokkal
Az erőforrások kezelésének egyszerűsítése érdekében azure Resource Manager sablonnal (ARM-sablonnal) helyezhet üzembe erőforrásokat az Azure-előfizetés szintjén. Üzembe helyezhet például szabályzatokat és Azure-beli szerepköralapú hozzáférés-vezérlést (Azure RBAC) az előfizetésében, amely az előfizetésre alkalmazza őket. Az előfizetésen belül is létrehozhat erőforráscsoportokat, és erőforrásokat helyezhet üzembe az előfizetés erőforráscsoportjaiban.
Megjegyzés
Előfizetési szintű üzembe helyezés esetén 800 különböző erőforráscsoportra telepítheti azokat.
A sablonok előfizetési szinten történő üzembe helyezéséhez használja az Azure CLI-t, a PowerShellt, a REST API-t vagy a portált.
Tipp
Azért javasoljuk a Bicep használatát, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információkért lásd az előfizetés üzembe helyezését ismertető cikket.
Támogatott erőforrások
Nem minden erőforrástípus helyezhető üzembe az előfizetés szintjén. Ez a szakasz felsorolja, hogy mely erőforrástípusok támogatottak.
Az Azure Blueprints esetében használja a következőt:
Azure-szabályzatok esetén használja a következőket:
Hozzáférés-vezérléshez használja a következőt:
- accessReviewScheduleDefinitions
- accessReviewScheduleSettings
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Az erőforráscsoportokban üzembe helyező beágyazott sablonok esetében használja a következőt:
Új erőforráscsoportok létrehozásához használja a következőt:
Az előfizetés kezeléséhez használja a következőt:
- Költségvetések
- konfigurációk – Advisor
- lineOfCredit
- Zárak
- profil – Változáselemzés
- supportPlanTypes
- Címkék
Monitorozáshoz használja a következőt:
A biztonság érdekében használja a következőt:
- advancedThreatProtectionSettings
- alertsSuppressionRules
- assessmentMetadata
- Értékelések
- autoProvisioningSettings
- Csatlakozók
- deviceSecurityGroups
- ingestionSettings
- díjszabások
- securityContacts
- beállítások
- workspaceSettings
Egyéb támogatott típusok a következők:
Séma
Az előfizetési szintű üzemelő példányokhoz használt séma eltér az erőforráscsoport-üzemelő példányok sémáitól.
Sablonokhoz használja a következőt:
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
...
}
A paraméterfájl sémája minden üzembehelyezési hatókör esetében megegyezik. Paraméterfájlok esetén használja a következőt:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Üzembehelyezési parancsok
Előfizetésben való üzembe helyezéshez használja az előfizetésszintű üzembehelyezési parancsokat.
Az Azure CLI-hez használja az az deployment sub create parancsot. Az alábbi példa egy sablont helyez üzembe egy erőforráscsoport létrehozásához:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/emptyrg.json" \
--parameters rgName=demoResourceGroup rgLocation=centralus
Az ARM-sablonok üzembe helyezési parancsaival és beállításaival kapcsolatos részletesebb információkért lásd:
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure Portal
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure CLI-vel
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure PowerShell
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure Resource Manager REST API-val
- Sablonok üzembe helyezése a GitHub-adattárból üzembe helyezési gomb használatával
- ARM-sablonok üzembe helyezése Cloud Shell
Üzembe helyezés helye és neve
Előfizetési szintű üzemelő példányok esetén meg kell adnia az üzembe helyezés helyét. Az üzembe helyezés helye eltér az üzembehelyezési erőforrások helyétől. Az üzembehelyezési hely határozza meg, hogy hol tárolja az üzembehelyezési adatokat. A felügyeleti csoportok és a bérlők üzembe helyezéséhez is szükség van egy helyre. Az erőforráscsoport üzemelő példányai esetében az erőforráscsoport helye az üzembehelyezési adatok tárolására szolgál.
Megadhatja az üzembe helyezés nevét, vagy használhatja az alapértelmezett üzembe helyezési nevet. Az alapértelmezett név a sablonfájl neve. Az azuredeploy.json nevű sablon üzembe helyezése például létrehozza az azuredeploy alapértelmezett üzembehelyezési nevét.
Minden üzembe helyezési név esetében a hely nem módosítható. Nem hozható létre üzembe helyezés egyetlen helyen, ha egy másik helyen található egy azonos nevű meglévő üzemelő példány. Ha például a centralusban a Deployment1 névvel rendelkező előfizetési üzembe helyezést hoz létre, később nem hozhat létre egy másik üzembe helyezést a deployment1 névvel, hanem a westus helyével. Ha a hibakódot InvalidDeploymentLocation
kapja, használjon másik nevet, vagy ugyanazt a helyet, mint az előző üzembe helyezés.
Üzembehelyezési hatókörök
Az előfizetésben való üzembe helyezéskor az alábbi erőforrásokat helyezheti üzembe:
- a műveletből származó cél-előfizetés
- bármely előfizetés a bérlőben
- erőforráscsoportok az előfizetésen vagy más előfizetéseken belül
- az előfizetés bérlője
A bővítményerőforrás hatóköre az üzembehelyezési céltól eltérő célra is kiterjedhet.
A sablont telepítő felhasználónak hozzáféréssel kell rendelkeznie a megadott hatókörhöz.
Ez a szakasz bemutatja, hogyan adhat meg különböző hatóköröket. Ezeket a különböző hatóköröket egyetlen sablonban kombinálhatja.
Hatókör a cél-előfizetéshez
Ha erőforrásokat szeretne üzembe helyezni a cél-előfizetésben, adja hozzá ezeket az erőforrásokat a sablon Erőforrások szakaszához.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
subscription-level-resources
],
"outputs": {}
}
Példák az előfizetésben való üzembe helyezésre: Erőforráscsoportok létrehozása és Szabályzatdefiníció hozzárendelése.
Hatókör más előfizetésre
Ha a művelettől eltérő előfizetésben szeretne erőforrásokat üzembe helyezni, adjon hozzá egy beágyazott üzembe helyezést. Állítsa a subscriptionId
tulajdonságot annak az előfizetésnek az azonosítójára, amelybe telepíteni szeretné az előfizetést. Állítsa be a location
beágyazott üzembe helyezés tulajdonságát.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"location": "westus",
"properties": {
"mode": "Incremental",
"template": {
subscription-resources
}
}
}
],
"outputs": {}
}
Hatókör az erőforráscsoporthoz
Ha erőforrásokat szeretne üzembe helyezni egy erőforráscsoportban az előfizetésen belül, adjon hozzá egy beágyazott üzembe helyezést, és foglalja bele a tulajdonságot resourceGroup
. A következő példában a beágyazott üzembe helyezés egy nevű demoResourceGroup
erőforráscsoportot céloz meg.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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": {}
}
Az erőforráscsoportban való üzembe helyezésre vonatkozó példa: Erőforráscsoport és erőforrások létrehozása.
Hatókör a bérlőre
Ha erőforrásokat szeretne létrehozni a bérlőben, állítsa a értéket a scope
értékre /
. A sablont telepítő felhasználónak rendelkeznie kell a bérlőn való üzembe helyezéshez szükséges hozzáféréssel.
Beágyazott üzembe helyezés használatához állítsa be a és location
a értéketscope
.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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": {}
}
Vagy beállíthatja a hatókört /
bizonyos erőforrástípusokra, például a felügyeleti csoportokra.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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')]"
}
}
}
További információ: Felügyeleti csoport.
Erőforráscsoportok
Erőforráscsoportok létrehozása
Ha erőforráscsoportot szeretne létrehozni egy ARM-sablonban, definiáljon egy Microsoft.Resources/resourceGroups erőforrást az erőforráscsoport nevével és helyével.
Az alábbi sablon egy üres erőforráscsoportot hoz létre.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgName": {
"type": "string"
},
"rgLocation": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2022-09-01",
"name": "[parameters('rgName')]",
"location": "[parameters('rgLocation')]",
"properties": {}
}
],
"outputs": {}
}
Több erőforráscsoport létrehozásához használja a másolási elemet erőforráscsoportokkal.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgNamePrefix": {
"type": "string"
},
"rgLocation": {
"type": "string"
},
"instanceCount": {
"type": "int"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2022-09-01",
"location": "[parameters('rgLocation')]",
"name": "[concat(parameters('rgNamePrefix'), copyIndex())]",
"copy": {
"name": "rgCopy",
"count": "[parameters('instanceCount')]"
},
"properties": {}
}
],
"outputs": {}
}
További információ az erőforrás-iterációról: Erőforrás-iteráció ARM-sablonokban és Oktatóanyag: Több erőforráspéldány létrehozása ARM-sablonokkal.
Erőforráscsoport és erőforrások létrehozása
Az erőforráscsoport létrehozásához és az erőforrások üzembe helyezéséhez használjon beágyazott sablont. A beágyazott sablon határozza meg az erőforráscsoportban üzembe helyezendő erőforrásokat. Állítsa a beágyazott sablont az erőforráscsoporttól függőként, hogy az erőforráscsoport létezik-e az erőforrások üzembe helyezése előtt. Akár 800 erőforráscsoportban is üzembe helyezheti azokat.
Az alábbi példa létrehoz egy erőforráscsoportot, és üzembe helyez egy tárfiókot az erőforráscsoportban.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgName": {
"type": "string"
},
"rgLocation": {
"type": "string"
},
"storagePrefix": {
"type": "string",
"maxLength": 11
}
},
"variables": {
"storageName": "[format('{0}{1}', parameters('storagePrefix'), uniqueString(subscription().id, parameters('rgName')))]"
},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2022-09-01",
"name": "[parameters('rgName')]",
"location": "[parameters('rgLocation')]",
"properties": {}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
"name": "storageDeployment",
"resourceGroup": "[parameters('rgName')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[variables('storageName')]",
"location": "[parameters('rgLocation')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
]
}
]
}
Azure Policy
Szabályzatdefiníció hozzárendelése
Az alábbi példa egy meglévő szabályzatdefiníciót rendel az előfizetéshez. Ha a szabályzatdefiníció paramétereket vesz fel, adja meg őket objektumként. Ha a szabályzatdefiníció nem fogad el paramétereket, használja az alapértelmezett üres objektumot.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyDefinitionID": {
"type": "string"
},
"policyName": {
"type": "string"
},
"policyParameters": {
"type": "object",
"defaultValue": {}
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "[parameters('policyName')]",
"properties": {
"scope": "[subscription().id]",
"policyDefinitionId": "[parameters('policyDefinitionID')]",
"parameters": "[parameters('policyParameters')]"
}
}
]
}
A sablon Azure CLI-vel való üzembe helyezéséhez használja a következőt:
# Built-in policy definition that accepts parameters
definition=$(az policy definition list --query "[?displayName=='Allowed locations'].id" --output tsv)
az deployment sub create \
--name demoDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policyassign.json" \
--parameters policyDefinitionID=$definition policyName=setLocation policyParameters="{'listOfAllowedLocations': {'value': ['westus']} }"
A sablon PowerShell-lel való üzembe helyezéséhez használja a következőt:
$definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq 'Allowed locations' }
$locations = @("westus", "westus2")
$policyParams =@{listOfAllowedLocations = @{ value = $locations}}
New-AzSubscriptionDeployment `
-Name policyassign `
-Location centralus `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policyassign.json" `
-policyDefinitionID $definition.PolicyDefinitionId `
-policyName setLocation `
-policyParameters $policyParams
Szabályzatdefiníciók létrehozása és hozzárendelése
Ugyanabban a sablonban definiálhat és rendelhet hozzá szabályzatdefiníciót.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2020-03-01",
"name": "locationpolicy",
"properties": {
"policyType": "Custom",
"parameters": {},
"policyRule": {
"if": {
"field": "location",
"equals": "northeurope"
},
"then": {
"effect": "deny"
}
}
}
},
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "location-lock",
"dependsOn": [
"locationpolicy"
],
"properties": {
"scope": "[subscription().id]",
"policyDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/policyDefinitions', 'locationpolicy')]"
}
}
]
}
Ha létre szeretné hozni a szabályzatdefiníciót az előfizetésben, és hozzá szeretné rendelni az előfizetéshez, használja a következő CLI-parancsot:
az deployment sub create \
--name demoDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policydefineandassign.json"
A sablon PowerShell-lel való üzembe helyezéséhez használja a következőt:
New-AzSubscriptionDeployment `
-Name definePolicy `
-Location centralus `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/policydefineandassign.json"
Azure Blueprints
Tervdefiníció létrehozása
Tervdefiníciót sablonból hozhat létre .
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"blueprintName": {
"defaultValue": "sample-blueprint",
"type": "String",
"metadata": {
"description": "The name of the blueprint definition."
}
}
},
"resources": [
{
"type": "Microsoft.Blueprint/blueprints",
"apiVersion": "2018-11-01-preview",
"name": "[parameters('blueprintName')]",
"properties": {
"targetScope": "subscription",
"description": "Blueprint with a policy assignment artifact.",
"resourceGroups": {
"sampleRg": {
"description": "Resource group to add the assignment to."
}
},
"parameters": {
"listOfResourceTypesNotAllowed": {
"type": "array",
"metadata": {
"displayName": "Resource types to pass to the policy assignment artifact."
},
"defaultValue": [
"Citrix.Cloud/accounts"
]
}
}
}
},
{
"type": "Microsoft.Blueprint/blueprints/artifacts",
"apiVersion": "2018-11-01-preview",
"name": "[concat(parameters('blueprintName'), '/policyArtifact')]",
"kind": "policyAssignment",
"dependsOn": [
"[parameters('blueprintName')]"
],
"properties": {
"displayName": "Blocked Resource Types policy definition",
"description": "Block certain resource types",
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', '6c112d4e-5bc7-47ae-a041-ea2d9dccd749')]",
"resourceGroup": "sampleRg",
"parameters": {
"listOfResourceTypesNotAllowed": {
"value": "[[parameters('listOfResourceTypesNotAllowed')]"
}
}
}
}
]
}
A tervdefiníció előfizetésben való létrehozásához használja a következő CLI-parancsot:
az deployment sub create \
--name demoDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/blueprints-new-blueprint/azuredeploy.json"
A sablon PowerShell-lel való üzembe helyezéséhez használja a következőt:
New-AzSubscriptionDeployment `
-Name demoDeployment `
-Location centralus `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/blueprints-new-blueprint/azuredeploy.json"
Hozzáférés-vezérlés
A szerepkörök hozzárendelésével kapcsolatos további információkért lásd: Azure-szerepkörök hozzárendelése Azure-Resource Manager-sablonok használatával.
Az alábbi példa létrehoz egy erőforráscsoportot, zárolást alkalmaz rá, és hozzárendel egy szerepkört egy taghoz.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "16815708176905569328"
}
},
"parameters": {
"rgName": {
"type": "string",
"metadata": {
"description": "Name of the resourceGroup to create"
}
},
"rgLocation": {
"type": "string",
"metadata": {
"description": "Location for the resourceGroup"
}
},
"principalId": {
"type": "string",
"metadata": {
"description": "principalId of the user that will be given contributor access to the resourceGroup"
}
},
"roleDefinitionId": {
"type": "string",
"defaultValue": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"metadata": {
"description": "roleDefinition to apply to the resourceGroup - default is contributor"
}
},
"roleAssignmentName": {
"type": "string",
"defaultValue": "[guid(parameters('principalId'), parameters('roleDefinitionId'), parameters('rgName'))]",
"metadata": {
"description": "Unique name for the roleAssignment in the format of a guid"
}
}
},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2019-10-01",
"name": "[parameters('rgName')]",
"location": "[parameters('rgLocation')]",
"tags": {
"Note": "subscription level deployment"
},
"properties": {}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "applyLock",
"resourceGroup": "[parameters('rgName')]",
"properties": {
"expressionEvaluationOptions": {
"scope": "inner"
},
"mode": "Incremental",
"parameters": {
"principalId": {
"value": "[parameters('principalId')]"
},
"roleDefinitionId": {
"value": "[parameters('roleDefinitionId')]"
},
"roleAssignmentName": {
"value": "[parameters('roleAssignmentName')]"
}
},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "6034226420560042393"
}
},
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "principalId of the user that will be given contributor access to the resourceGroup"
}
},
"roleDefinitionId": {
"type": "string",
"metadata": {
"description": "roleDefinition to apply to the resourceGroup - default is contributor"
}
},
"roleAssignmentName": {
"type": "string",
"metadata": {
"description": "Unique name for the roleAssignment in the format of a guid"
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "DontDelete",
"properties": {
"level": "CanNotDelete",
"notes": "Prevent deletion of the resourceGroup"
}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-04-01-preview",
"name": "[guid(parameters('roleAssignmentName'))]",
"properties": {
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
},
"dependsOn": [
"[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('rgName'))]"
]
}
]
}
Következő lépések
- A Microsoft Defender felhőbeli munkaterület-beállításainak üzembe helyezésére vonatkozó példa: deployASCwithWorkspaceSettings.json.
- Mintasablonok a GitHubon találhatók.
- A sablonokat felügyeleti csoport és bérlői szinten is üzembe helyezheti.