Rychlý start: Definování a přiřazení podrobného plánu Azure Blueprint pomocí PowerShellu
Učení, jak vytvářet a přiřazovat podrobné plány, umožňuje definici běžných vzorů pro vývoj znovu použitelných a rychle nasaditelných konfigurací založených na šablonách Azure Resource Manager (šablonách ARM), zásadách, zabezpečení a dalších. V tomto kurzu se naučíte používat podrobné plány Azure Blueprint k provádění nejčastějších úloh spojených s vytvářením, publikováním a přiřazením podrobného plánu v organizaci, jako je například:
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Pokud ještě není nainstalovaný, podle pokynů v tématu Přidání modulu Az.Blueprint nainstalujte a ověřte modul Az.Blueprint z Galerie prostředí PowerShell.
- Pokud jste ještě nepouží Azure Blueprints, zaregistrujte poskytovatele prostředků prostřednictvím Azure PowerShell pomocí
Register-AzResourceProvider -ProviderNamespace Microsoft.Blueprint.
Použití služby Azure Cloud Shell
Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Můžete použít předinstalované příkazy služby Cloud Shell ke spuštění kódu uvedeného v tomto článku, aniž byste museli instalovat cokoli do svého místního prostředí.
Spuštění služby Azure Cloud Shell:
| Možnost | Příklad nebo odkaz |
|---|---|
| Zvolte Vyzkoušet v pravém horním rohu bloku kódu. Výběr Vyzkoušet automaticky nekopíruje kód do služby Cloud Shell. | ![]() |
| Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. | ![]() |
| Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. | ![]() |
Pokud chcete spustit kód uvedený v tomto článku ve službě Azure Cloud Shell, postupujte takto:
Spusťte Cloud Shell.
Vyberte tlačítko Kopírovat na bloku kódu a kód zkopírujte.
Vložte kód do relace Cloud Shell pomocí kláves Ctrl+Shift+V ve Windows a Linuxu nebo pomocí kláves Cmd+Shift+V v systému macOS.
Spusťte kód stisknutím klávesy Enter.
Vytvoření podrobného plánu
Jako první krok při definování standardního vzoru pro dodržování předpisů je sestavení podrobného plánu z dostupných prostředků. Vytvoříme podrobný plán MyBlueprint, který pro předplatné nakonfiguruje přiřazení rolí a zásad. Pak k této skupině prostředků přidáme skupinu prostředků, šablonu ARM a přiřazení role.
Poznámka
Při použití PowerShellu se nejprve vytvoří objekt podrobného plánu. Pro každý přidávaný artefakt, který má parametry, je potřeba předem definovat parametry v počátečním podrobném plánu.
Vytvořte počáteční objekt blueprint. Parametr BlueprintFile přebírá soubor JSON, který obsahuje vlastnosti podrobného plánu, všechny skupiny prostředků, které se mají vytvořit, a všechny parametry úrovně podrobného plánu. Tyto parametry se nastaví při přiřazení a používají je artefakty přidané v dalších krocích.
Soubor JSON – blueprint.json
{ "properties": { "description": "This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.", "targetScope": "subscription", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "displayName": "storage account type.", "description": null } }, "tagName": { "type": "string", "metadata": { "displayName": "The name of the tag to provide the policy assignment.", "description": null } }, "tagValue": { "type": "string", "metadata": { "displayName": "The value of the tag to provide the policy assignment.", "description": null } }, "contributors": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Contributor role at the subscription", "strongType": "PrincipalId" } }, "owners": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Owner role at the resource group", "strongType": "PrincipalId" } } }, "resourceGroups": { "storageRG": { "description": "Contains the resource template deployment and a role assignment." } } } }Příkaz PowerShellu
# Login first with Connect-AzAccount if not using Cloud Shell # Get a reference to the new blueprint object, we'll use it in subsequent steps $blueprint = New-AzBlueprint -Name 'MyBlueprint' -BlueprintFile .\blueprint.jsonPoznámka
Při vytváření definic podrobných plánů prostřednictvím kódu programu použijte soubor blueprint.json. Tento název souboru se používá při volání importu Import-AzBlueprintWithArtifact.
Objekt podrobného plánu se ve výchozím nastavení vytvoří ve výchozím předplatném. Pokud chcete zadat skupinu pro správu, použijte parametr ManagementGroupId. Pokud chcete zadat předplatné, použijte parametr SubscriptionId.
Přidejte do předplatného přiřazení role. ArtifactFile definuje druh artefaktu, vlastnosti zarovnané s identifikátorem definice role a hlavní identity se předá jako pole hodnot. V následujícím příkladu jsou identity objektů zabezpečení s udělenou zadanou rolí nakonfigurovány na parametr, který je nastaven během přiřazení podrobného plánu. Tento příklad používá předdefinovou roli Přispěvatel s identifikátorem GUID
b24988ac-6180-42a0-ab88-20f7382dd24c.Soubor JSON – \artifacts\roleContributor.json
{ "kind": "roleAssignment", "properties": { "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", "principalIds": "[parameters('contributors')]" } }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintArtifact -Blueprint $blueprint -Name 'roleContributor' -ArtifactFile .\artifacts\roleContributor.json
Přidejte do předplatného přiřazení zásad. ArtifactFile definuje druh artefaktu, vlastnosti, které odpovídají definici zásady nebo iniciativy, a konfiguruje přiřazení zásady tak, aby při přiřazování podrobného plánu bylo možné konfigurovat definované parametry podrobného plánu. Tento příklad používá předdefinovou zásadu Použít značku a její výchozí hodnotu pro skupiny prostředků s identifikátorem GUID
49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.Soubor JSON – \artifacts\policyTags.json
{ "kind": "policyAssignment", "properties": { "displayName": "Apply tag and its default value to resource groups", "description": "Apply tag and its default value to resource groups", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71", "parameters": { "tagName": { "value": "[parameters('tagName')]" }, "tagValue": { "value": "[parameters('tagValue')]" } } } }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyTags' -ArtifactFile .\artifacts\policyTags.json
Přidejte do předplatného další přiřazenou zásadu pro značku úložiště (znovu použijte parametr storageAccountType). Tento další artefakt přiřazené zásady ukazuje, že parametr definovaný v podrobném plánu může používat více artefaktů. V tomto příklad se parametr storageAccountType používá k nastavení značky u skupiny prostředků. Tato hodnota poskytuje informace o účtu úložiště, který se vytvoří v dalším kroku. Tento příklad používá předdefinovou zásadu Použít značku a její výchozí hodnotu pro skupiny prostředků s identifikátorem GUID
49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.Soubor JSON – \artifacts\policyStorageTags.json
{ "kind": "policyAssignment", "properties": { "displayName": "Apply storage tag to resource group", "description": "Apply storage tag and the parameter also used by the template to resource groups", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71", "parameters": { "tagName": { "value": "StorageType" }, "tagValue": { "value": "[parameters('storageAccountType')]" } } } }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyStorageTags' -ArtifactFile .\artifacts\policyStorageTags.json
Přidejte pod skupinu prostředků šablonu. TemplateFile pro šablonu ARM obsahuje normální komponentu JSON šablony. Šablona také znovu používá parametry podrobného plánu storageAccountType, tagName a tagValue, které se šabloně předávají. Parametry podrobného plánu jsou pro šablonu dostupné pomocí parametru TemplateParameterFile a uvnitř json šablony se k vložení hodnoty používá pár klíč-hodnota. Názvy parametrů podrobného plánu a šablony mohou být stejné.
Soubor šablony JSON ARM – \artifacts\templateStorage.json
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountTypeFromBP": { "type": "string", "metadata": { "description": "Storage Account type" } }, "tagNameFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag name from blueprint" } }, "tagValueFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag value from blueprint" } } }, "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]" }, "resources": [{ "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "apiVersion": "2016-01-01", "tags": { "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]" }, "location": "[resourceGroup().location]", "sku": { "name": "[parameters('storageAccountTypeFromBP')]" }, "kind": "Storage", "properties": {} }], "outputs": { "storageAccountSku": { "type": "string", "value": "[variables('storageAccountName')]" } } }Soubor parametrů šablony ARM JSON – \artifacts\templateStorageParams.json
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountTypeFromBP": { "value": "[parameters('storageAccountType')]" }, "tagNameFromBP": { "value": "[parameters('tagName')]" }, "tagValueFromBP": { "value": "[parameters('tagValue')]" } } }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintArtifact -Blueprint $blueprint -Type TemplateArtifact -Name 'templateStorage' -TemplateFile .\artifacts\templateStorage.json -TemplateParameterFile .\artifacts\templateStorageParams.json -ResourceGroupName storageRG
Přidejte pod skupinu prostředků přiřazení role. Jde o podobné přiřazení jako při předchozím přiřazení role. V následujícím příkladu se identifikátor definice použije pro roli Owner (Vlastník), který jí z podrobného plánu nabídne jiný parametr. Tento příklad používá předdefinovou roli Vlastník s identifikátorem GUID
8e3af657-a8ff-443c-a75c-2fe8c4bcb635.Soubor JSON – \artifacts\roleOwner.json
{ "kind": "roleAssignment", "properties": { "resourceGroup": "storageRG", "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635", "principalIds": "[parameters('owners')]" } }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintArtifact -Blueprint $blueprint -Name 'roleOwner' -ArtifactFile .\artifacts\roleOwner.json
Publikování podrobného plánu
Po přidání artefaktů do podrobného plánu ho můžeme publikovat. Publikováním se zpřístupní, aby bylo možné ho přiřadit k předplatnému.
# Use the reference to the new blueprint object from the previous steps
Publish-AzBlueprint -Blueprint $blueprint -Version '{BlueprintVersion}'
Hodnota {BlueprintVersion} představuje řetězec složený z písmen, číslic a spojovníků (bez mezer a speciálních znaků) o maximální délce 20 znaků. Použijte jedinečnou hodnotu, která má vypovídací schopnost, třeba v20180622-135541.
Přiřazení podrobného plánu
Po publikování podrobného plánu pomocí PowerShellu je možné ho přiřadit k předplatnému. Přiřaďte vytvořený podrobný plán některému z předplatných v hierarchii skupiny pro správu. Pokud je podrobný plán uložený v předplatném, je možné ho přiřadit pouze k předplatnému. Parametr Blueprint určuje podrobný plán, který se má přiřadit. Pokud chcete zadat parametry názvu, umístění, identity, zámku a podrobného plánu, použijte odpovídající parametry PowerShellu v rutině nebo je zadejte v souboru JSON s parametry New-AzBlueprintAssignment AssignmentFile.
Spusťte nasazení podrobného plánu tím, že ho přiřadíte k předplatnému. Protože parametry contributors a owners vyžadují pole objectId objektů objektů, které mají být uděleny přiřazení role, použijte rozhraní Azure Active Directory Graph API ke shromáždění objectIds pro použití v souboru Přiřazení pro vlastní uživatele, skupiny nebo instanční objekty.
Soubor JSON – blueprintAssignment.json
{ "properties": { "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint", "resourceGroups": { "storageRG": { "name": "StorageAccount", "location": "eastus2" } }, "parameters": { "storageAccountType": { "value": "Standard_GRS" }, "tagName": { "value": "CostCenter" }, "tagValue": { "value": "ContosoIT" }, "contributors": { "value": [ "7be2f100-3af5-4c15-bcb7-27ee43784a1f", "38833b56-194d-420b-90ce-cff578296714" ] }, "owners": { "value": [ "44254d2b-a0c7-405f-959c-f829ee31c2e7", "316deb5f-7187-4512-9dd4-21e7798b0ef9" ] } } }, "identity": { "type": "systemAssigned" }, "location": "westus" }Příkaz PowerShellu
# Use the reference to the new blueprint object from the previous steps New-AzBlueprintAssignment -Blueprint $blueprint -Name 'assignMyBlueprint' -AssignmentFile .\blueprintAssignment.jsonSpravovaná identita přiřazená uživatelem
Přiřazení podrobného plánu může také používat spravovanou identitu přiřazenou uživatelem. V tomto případě se část identity v souboru přiřazení JSON změní následujícím způsobem. Hodnoty , , a
{tenantId}{subscriptionId}{yourRG}nahraďte id tenanta, ID předplatného, názvem skupiny prostředků a názvem spravované identity přiřazené{userIdentity}uživatelem."identity": { "type": "userAssigned", "tenantId": "{tenantId}", "userAssignedIdentities": { "/subscriptions/{subscriptionId}/resourceGroups/{yourRG}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userIdentity}": {} } },Spravovaná identita přiřazená uživatelem může být v jakémkoli předplatném a skupině prostředků, ke které má uživatel přiřazující podrobný plán oprávnění.
Důležité
Azure Blueprints nespravovat spravovanou identitu přiřazenou uživatelem. Uživatelé zodpovídají za přiřazování dostatečných rolí a oprávnění, jinak přiřazení podrobného plánu selže.
Vyčištění prostředků
Zrušení přiřazení plánu
Podrobný plán můžete odebrat z předplatného. Odebrání se často provádí v případě, že už nepotřebujete prostředky artefaktů. Po odebrání podrobného plánu zůstanou přiřazené artefakty, které byly jeho součástí. Pokud chcete odebrat přiřazení podrobného plánu, použijte Remove-AzBlueprintAssignment rutinu :
assignMyBlueprint
Remove-AzBlueprintAssignment -Name 'assignMyBlueprint'
Další kroky
V tomto rychlém startu jste vytvořili, přiřadili a odebrali podrobný plán pomocí PowerShellu. Další informace o Azure Blueprints najdete v článku Životní cyklus podrobného plánu.


