Hızlı Başlangıç: Azure CLI ile Azure şeması tanımlama ve atama

Önemli

Azure Blueprints (Önizleme) 31 Ocak 2027'de kullanımdan kaldırılacak ve 31 Temmuz 2026'da aşamalı kullanımdan kaldırılacaktır. Mevcut şema tanımlarınızı ve atamalarınızı Dağıtım Yığınlarına (önerilen) ve Şablon Belirtimlerine geçirin. Şema yapıtları, dağıtım yığınlarını tanımlamak için kullanılan ARM JSON şablonlarına veya Bicep dosyalarına dönüştürülür. Aşamalı zaman çizelgesinin tamamı, etkiler ve SSS için Azure Blueprints'in kullanımdan kaldırılması sayfasına veya https://aka.ms/AzureBlueprintsRetirement bakın. Bir yapıtı ARM kaynağı olarak yazmayı öğrenmek için bkz:

Bu öğreticide, kuruluşunuzda şema oluşturma, yayımlama ve atamayla ilgili bazı yaygın görevleri gerçekleştirmek için Azure Blueprints'i kullanmayı öğreneceksiniz. Bu beceri, Azure Resource Manager (ARM) şablonları, ilkesi ve güvenliği temelinde yeniden kullanılabilir ve hızla dağıtılabilir yapılandırmalar geliştirmek için ortak desenler tanımlamanıza yardımcı olur.

Önkoşullar

  • Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Azure Blueprints'i daha önce kullanmadıysanız, ile Azure CLI az provider register --namespace Microsoft.Blueprintaracılığıyla kaynak sağlayıcısını kaydedin.

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Azure Cloud Shell'i başlatma düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift+V, macOS'te ise Cmd+Shift+V tuşlarına basarak kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

Şema uzantısını ekleme

Azure CLI'nın şema tanımlarını ve atamalarını yönetmesini sağlamak için uzantıyı eklemeniz gerekir. Bu uzantı, Azure CLI'yi kullanabileceğiniz her yerde çalışır. Buna Windows 10 üzerinde bash, Cloud Shell (hem tek başına sürüm hem de portalın içindeki sürüm), Azure CLI Docker görüntüsü veya yerel olarak yüklenmiş bir uzantı dahildir.

  1. En son Azure CLI'nin yüklü olup olmadığını denetleyin (en az 2.0.76). Henüz yüklenmiş değilse, bu yönergeleri izleyin.

  2. Tercih edilen Azure CLI ortamınızda aşağıdaki komutu kullanarak uzantıyı içeri aktarın:

    # Add the Blueprint extension to the Azure CLI environment
    az extension add --name blueprint
    
  3. Uzantının yüklendiğini ve beklenen sürüm (en az 0.1.0) olduğunu doğrulayın:

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

Şema oluşturma

Uyumluluk için standart desen tanımlamanın ilk adımı kullanılabilir durumdaki kaynaklardan bir şema oluşturmaktır. Şimdi aboneliğin rol ve ilke atamalarını yapılandırmak için MyBlueprint adlı bir şema oluşturalım. Ardından kaynak grubuna bir kaynak grubu, ARM şablonu ve rol ataması eklersiniz.

Not

Azure CLI'yı kullanırken önce şema nesnesi oluşturulur. Parametreleri olan eklenecek her yapıt için, parametreleri ilk şemada önceden tanımlarsınız.

  1. İlk şema nesnesini oluşturun. parametresi, parameters tüm şema düzeyi parametrelerini içeren bir JSON dosyası alır. Atama sırasında parametreleri ayarlarsınız ve bunlar sonraki adımlarda eklediğiniz yapıtlar tarafından kullanılır.

    • JSON dosyası - blueprintparms.json

      {
         "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"
             }
         }
      }
      
    • Azure CLI komutu

      # 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
      

      Not

      Şema tanımlarınızı içeri aktarırken dosya adı blueprint.json kullanın. Bu dosya adı, az blueprint import komutunu çağırdığınızda kullanılır.

      Şema nesnesi varsayılan olarak varsayılan abonelikte oluşturulur. Yönetim grubunu belirtmek için parametresini managementgroupkullanın. Aboneliği belirtmek için parametresini subscriptionkullanın.

  2. Depolama yapıları için kaynak grubunu tanıma ekleyin.

    az blueprint resource-group add \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'storageRG' \
       --description 'Contains the resource template deployment and a role assignment.'
    
  3. Abonelikte bir rol ataması ekleyin. Aşağıdaki örnekte, belirtilen role verilen asıl kimlikler şema ataması sırasında ayarlanan bir parametreye yapılandırılır. Bu örnek, b24988ac-6180-42a0-ab88-20f7382dd24c GUID’sine sahip Contributor yerleşik rolünü kullanır.

    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. Abonelikte bir ilke ataması ekleyin. Bu örnekte, GUID'si 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 olan yerleşik Apply tag and its default value to resource groups ilkesi kullanılır.

    • JSON dosyası - artifacts\policyTags.json

      {
         "tagName": {
            "value": "[parameters('tagName')]"
         },
         "tagValue": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Azure CLI komutu

      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
      

      Not

      Mac'te az blueprint kullandığınızda, yolu içeren parametre değerleri için \ yerine / kullanın. Bu durumda değeri parameters olur artifacts/policyTags.json.

  5. Depolama etiketi için abonelik düzeyinde, storageAccountType_ parameter öğesini yeniden kullanarak başka bir ilke ataması ekleyin. Bu ek ilke ataması yapıtı, şemada tanımlanan bir parametrenin birden fazla yapıt tarafından kullanılabileceğini gösterir. Örnekte, kaynak grubuna bir etiket ayarlamak için storageAccountType öğesini kullanırsınız. Bu değer, sonraki adımda oluşturduğunuz depolama hesabı hakkında bilgi sağlar. Bu örnekte, GUID'si 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 olan yerleşik Apply tag and its default value to resource groups ilkesi kullanılır.

    • JSON dosyası - artifacts\policyStorageTags.json

      {
         "tagName": {
            "value": "StorageType"
         },
         "tagValue": {
            "value": "[parameters('storageAccountType')]"
         }
      }
      
    • Azure CLI komutu

      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
      

      Not

      Mac'te az blueprint kullandığınızda, yolu içeren parametre değerleri için \ yerine / kullanın. Bu durumda değeri parameters olur artifacts/policyStorageTags.json.

  6. Kaynak grubunun altına bir şablon ekleyin. ARM şablonunun template parametresi, şablonun normal JSON bileşenlerini içerir. Şablon ayrıca storageAccountType, tagName ve tagValue şema parametrelerinin her birini şablona geçirerek bunları yeniden kullanır. Şema parametreleri parametresi parameterskullanılarak şablon tarafından kullanılabilir ve JSON şablonunun içinde anahtar-değer çifti değeri eklemek için kullanılır. Şema ve şablon parametre adları aynı olabilir.

    • JSON ARM şablon dosyası - 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')]"
              }
          }
      }
      
    • JSON ARM şablon parametre dosyası - artifacts\templateStorageParams.json

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

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

      Not

      Mac'te az blueprint kullanırken, yolu içeren parametre değerleri için \ yerine / kullanın. Bu durumda, template değeri artifacts/templateStorage.json olur ve parameters, artifacts/templateStorageParams.json olur.

  7. Kaynak grubunun altına bir rol ataması ekleyin. Önceki rol ataması girdisine benzer şekilde, aşağıdaki örnek rol için tanım tanımlayıcısını Owner kullanır ve şemadan farklı bir parametre sağlar. Bu örnek, 8e3af657-a8ff-443c-a75c-2fe8c4bcb635 GUID’sine sahip Owner yerleşik rolünü kullanır.

    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'
    

Şemayı yayımlama

Artık artefaktları taslağa eklediğinize göre, onu yayımlama zamanı geldi. Yayımlama, şemanın aboneliğe atanabilir olmasını sağlar.

az blueprint publish --blueprint-name 'MyBlueprint' --version '{BlueprintVersion}'

değeri {BlueprintVersion} harf, sayı ve kısa çizgilerden oluşan bir dizedir (boşluk veya başka özel karakter içermeyen). Maksimum uzunluk 20 karakterdir. gibi v20200605-135541benzersiz ve bilgilendiren bir şey kullanın.

Taslak ata

Azure CLI'yi kullanarak bir Blueprint yayımladıktan sonra, bu Blueprint bir aboneliğe atanabilir. Oluşturduğunuz şemayı yönetim grubu hiyerarşinizin altındaki aboneliklerden birine atayın. Şema bir aboneliğe kaydedildiyse, yalnızca bu aboneliğe atanabilir. blueprint-name parametresi, atanacak şemayı belirtir. name, location, identity, lock ve blueprint parametrelerini belirtmek için `az blueprint assignment create` komutunda karşılık gelen Azure CLI parametrelerini kullanın veya bunları parameters JSON dosyasında belirtin.

  1. Bir aboneliğe atayarak şema dağıtımını çalıştırın. contributors ve owners parametreleri, rol atamasının verileceği asılların objectIds değerlerinden oluşan bir dizi gerektirdiğinden, kendi kullanıcılarınız, gruplarınız veya hizmet sorumlularınız için parameters içinde kullanmak üzere objectIds değerlerini toplamak amacıyla Azure Active Directory Graph API'sini kullanın.

    • JSON dosyası - blueprintAssignment.json

      {
         "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"
             ]
         }
      }
      
    • Azure CLI komutu

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      
    • Kullanıcı tarafından atanan yönetilen kimlik

      Şema ataması, kullanıcı tarafından atanan yönetilen kimliği de kullanabilir. Bu durumda parametresi identity-type olarak ayarlanır UserAssignedve user-assigned-identities parametresi kimliği belirtir. {userIdentity} öğesini kullanıcı tarafından atanmış yönetilen kimliğinizin adıyla değiştirin.

      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
      

      Kullanıcı tarafından atanan yönetilen kimlik, şemayı atayan kullanıcının izinlere sahip olduğu herhangi bir abonelikte ve kaynak grubunda olabilir.

      Önemli

      Azure Blueprints, kullanıcı tarafından atanan yönetilen kimliği yönetmez. Kullanıcılar yeterli rol ve izin atamakla sorumludur, aksi takdirde şema ataması başarısız olur.

Kaynakları temizleme

Bir şemayı abonelikten kaldırabilirsiniz. Kaldırma işlemi genellikle yapıt kaynaklarına ihtiyaç duyulmadığında gerçekleştirilir. Bir şema kaldırıldığında o şemanın bir parçası olarak atanan yapıtlar geride kalır. Şema atamasını kaldırmak için komutunu az blueprint assignment delete kullanın:

az blueprint assignment delete --name 'assignMyBlueprint'

Sonraki adımlar

Bu hızlı başlangıçta, Azure CLI ile bir şema oluşturdunuz, atadı ve kaldırdınız. Azure Blueprints hakkında daha fazla bilgi edinmek için şema yaşam döngüsü makalesine geçin.