Rychlý Start: definování a přiřazení Azure Blueprint pomocí Azure CLI

Učení vytváření a přiřazování podrobných plánů umožňuje definování běžných vzorů pro vývoj opakovaně použitelných a rychlých nasazení konfigurací na základě Azure Resource Manager šablon (šablon ARM), zásad, 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 jste Azure modrotisky nepoužívali dřív, zaregistrujte poskytovatele prostředků prostřednictvím Azure CLI pomocí az provider register --namespace 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říklad Vyzkoušet služby Azure 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. Spuštění služby Cloud Shell v novém okně
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Tlačítko Cloud Shell na webu Azure Portal

Pokud chcete spustit kód uvedený v tomto článku ve službě Azure Cloud Shell, postupujte takto:

  1. Spusťte Cloud Shell.

  2. Vyberte tlačítko Kopírovat na bloku kódu a kód zkopírujte.

  3. 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.

  4. Spusťte kód stisknutím klávesy Enter.

Přidat rozšíření podrobného plánu

Aby bylo možné povolit Azure CLI ke správě definic a přiřazení podrobného plánu, je nutné rozšíření přidat. Toto rozšíření funguje bez ohledu na to rozhraní příkazového řádku Azure je možné, včetně bash ve Windows 10, Cloud Shell (samostatné a uvnitř portálu), image Dockeru rozhraní příkazového řádku Azure, nebo lokálně nainstalované.

  1. Ověřte, že je nainstalované nejnovější rozhraní příkazového řádku Azure (aspoň 2.0.76). Pokud ještě není nainstalovaný, postupujte podle těchto pokynů.

  2. V prostředí Azure CLI podle vašeho výběru ho importujete pomocí následujícího příkazu:

    # Add the Blueprint extension to the Azure CLI environment
    az extension add --name blueprint
    
  3. Ověřte, že rozšíření je nainstalované a má očekávanou verzi (minimálně 0.1.0):

    # Check the extension list (note that you may have other extensions installed)
    az extension list
    
    # Run help for extension options
    az blueprint -h
    

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. Potom do skupiny prostředků přidáme skupinu prostředků, šablonu ARM a přiřazení role.

Poznámka

Při použití rozhraní příkazového řádku Azure je nejprve vytvořen 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.

  1. Vytvořte počáteční objekt blueprint. Parametr Parameters přebírá soubor JSON, který obsahuje 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 – blueprintparms.jsna

      {
         "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"
             }
         }
      }
      
    • Příkaz Azure CLI

      # Login first with az login if not using Cloud Shell
      
      # Create the blueprint object
      az blueprint create \
         --name 'MyBlueprint' \
         --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.' \
         --parameters blueprintparms.json
      

      Poznámka

      Při importu definic podrobných plánů použijte název souboru blueprint.js . Tento název souboru se používá při volání metody AZ detail import.

      Ve výchozím nastavení je ve výchozím předplatném vytvořen objekt podrobného plánu. Chcete-li určit skupinu pro správu, použijte skupinu pro správu parametrů. K zadání předplatného použijte parametr Subscription.

  2. Přidejte do definice skupinu prostředků pro artefakty úložiště.

    az blueprint resource-group add \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'storageRG' \
       --description 'Contains the resource template deployment and a role assignment.'
    
  3. Přidejte do předplatného přiřazení role. V následujícím příkladu jsou hlavní identity udělené zadané roli nakonfigurovány na parametr, který je nastaven během přiřazení podrobného plánu. V tomto příkladu se používá předdefinovaná role Přispěvatel s identifikátorem GUID b24988ac-6180-42a0-ab88-20f7382dd24c .

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleContributor' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' \
       --principal-ids "[parameters('contributors')]"
    
  4. Přidejte do předplatného přiřazení zásad. V tomto příkladu se používá značka Apply a její výchozí hodnota pro předdefinované zásady skupin prostředků s identifikátorem GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 .

    • Soubor JSON – artifacts\policyTags.jsna

      {
         "tagName": {
            "value": "[parameters('tagName')]"
         },
         "tagValue": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Příkaz Azure CLI

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply tag and its default value to resource groups' \
         --description 'Apply tag and its default value to resource groups' \
         --parameters artifacts\policyTags.json
      

      Poznámka

      Při použití az blueprint v Macu nahraďte hodnotou \ / parametru, která zahrnuje cestu. V tomto případě se hodnota pro parametry přestanou artifacts/policyTags.json .

  5. 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. V tomto příkladu se používá značka Apply a její výchozí hodnota pro předdefinované zásady skupin prostředků s identifikátorem GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 .

    • Soubor JSON – artifacts\policyStorageTags.jsna

      {
         "tagName": {
            "value": "StorageType"
         },
         "tagValue": {
            "value": "[parameters('storageAccountType')]"
         }
      }
      
    • Příkaz Azure CLI

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyStorageTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply storage tag to resource group' \
         --description 'Apply storage tag and the parameter also used by the template to resource groups' \
         --parameters artifacts\policyStorageTags.json
      

      Poznámka

      Při použití az blueprint v Macu nahraďte hodnotou \ / parametru, která zahrnuje cestu. V tomto případě se hodnota pro parametry přestanou artifacts/policyStorageTags.json .

  6. Přidejte pod skupinu prostředků šablonu. Parametr šablony pro šablonu ARM obsahuje normální komponenty 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 k dispozici pro šablonu pomocí parametrů parametrů a uvnitř šablony JSON, kterou používá pár klíč-hodnota k vložení hodnoty. Název parametru podrobného plánu a šablony může být stejný.

    • Soubor šablony ARM formátu JSON – artifacts\templateStorage.jsna

      {
          "$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 formátu JSON – artifacts\templateStorageParams.js

      {
         "storageAccountTypeFromBP": {
            "value": "[parameters('storageAccountType')]"
         },
         "tagNameFromBP": {
            "value": "[parameters('tagName')]"
         },
         "tagValueFromBP": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Příkaz Azure CLI

      az blueprint artifact template create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'templateStorage' \
         --template artifacts\templateStorage.json \
         --parameters artifacts\templateStorageParams.json \
         --resource-group-art 'storageRG'
      

      Poznámka

      Při použití az blueprint v Macu nahraďte hodnotou \ / parametru, která zahrnuje cestu. V tomto případě se hodnota pro šablonu přestanou artifacts/templateStorage.json a parametry se budou nacházet artifacts/templateStorageParams.json .

  7. 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. V tomto příkladu se používá předdefinovaná role Owner s identifikátorem GUID 8e3af657-a8ff-443c-a75c-2fe8c4bcb635 .

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleOwner' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635' \
       --principal-ids "[parameters('owners')]" \
       --resource-group-art 'storageRG'
    

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.

az blueprint publish --blueprint-name 'MyBlueprint' --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 něco jedinečného a informativní, jako je například v20200605-135541.

Přiřazení podrobného plánu

Po publikování podrobného plánu pomocí Azure CLI ho můžete 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, může být přiřazen pouze k tomuto předplatnému. Parametr Details-Name určuje 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 v příkazu párové parametry rozhraní příkazového řádku Azure CLI az blueprint assignment create nebo je poskytněte v souboru JSON parametrů .

  1. Spusťte nasazení podrobného plánu tím, že ho přiřadíte k předplatnému. jelikož parametry přispěvatelé a vlastníci vyžadují, aby bylo přiřazení role uděleno pole objectid objektů zabezpečení, použijte Azure Active Directory Graph API pro shromáždění identifikátorů objectid pro použití v parametrech pro vlastní uživatele, skupiny nebo instanční objekty.

    • Soubor JSON – blueprintAssignment.jsna

      {
         "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"
             ]
         }
      }
      
    • Příkaz Azure CLI

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      
    • Spravovaná identita přiřazená uživatelem

      Přiřazení podrobného plánu může také používat uživatelsky přiřazenou spravovanou identitu. V tomto případě je parametr typu identity nastavený na UserAssigned a parametr User-Assigned-identity Určuje identitu. Nahraďte {userIdentity} názvem vaší uživatelsky přiřazené spravované identity.

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --identity-type UserAssigned \
         --user-assigned-identities {userIdentity} \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      

      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řihlášený podrobný plán oprávnění.

      Důležité

      Azure modrotisky nespravuje spravovanou identitu přiřazenou uživatelem. Uživatelé zodpovídají za přiřazení dostatečných rolí a oprávnění nebo přiřazení podrobného plánu se nezdaří.

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í. Chcete-li odebrat přiřazení podrobného plánu, použijte az blueprint assignment delete příkaz:

az blueprint assignment delete --name 'assignMyBlueprint'

Další kroky

V tomto rychlém startu jste vytvořili, přiřadili a odebrali podrobný plán pomocí Azure CLI. Další informace o plánech Azure najdete v článku o životním cyklu podrobného plánu.