Azure Blueprintsをテンプレート スペックに移行する

Azure Blueprints (プレビュー) は、2027 年 1 月 31 日に廃止されます。 この記事では、ブループリント定義と成果物をテンプレート スペックに移行する方法と、バージョン管理と拒否割り当て保護を維持するために、Azureデプロイ スタックを使用してデプロイする方法について説明します。 段階的なタイムラインについては、「Azure Blueprints廃止」を参照してください。

テンプレート スペックは、ARM テンプレートまたは Bicep ファイルを Azure 環境に格納するリソースの種類 (Microsoft.Resources/templateSpecs) であり、組織全体でバージョン管理および共有できます。 テンプレート スペックは、ブループリント定義で提供された 成果物ストレージとバージョン管理ロールに 代わるものになります。 デプロイ スタックは、ブループリント割り当てが提供していた割り当て、ライフサイクル、およびロックの役割を置き換えます。

Prerequisites

  • Azure CLIまたはAzure PowerShell。
  • 既存のブループリント定義を読み取り、ターゲット スコープ (サブスクリプションまたは管理グループ) でテンプレート スペックとデプロイ スタックを作成するためのアクセス許可。
  • 拒否設定を構成する必要がある場合は、ターゲット スコープでの所有者またはユーザー アクセス管理者である必要があります。

移行の手順

  1. ブループリント定義をエクスポートします。 各ブループリント定義を、その成果物(Azure Policy の割り当て、ロールの割り当て、ARM テンプレートを含む)と共に JSON にエクスポートします。 詳細については、「ブループリント定義をエクスポートする」を参照してください。

    2027 年 1 月 31 日より前に保持するすべてのものをエクスポートします。 提供終了後、エクスポートされていない定義、バージョン、および割り当てが削除されます。

  2. エクスポートされた成果物を 1 つのテンプレートに変換します。 エクスポートした JSON を 1 つの ARM テンプレートまたは Bicep ファイルに変換します。 各ブループリント アーティファクトを同等の ARM リソースにマップします。

    ブループリント アーティファクト ARM/Bicep 同等
    ポリシーの割り当て Microsoft.Authorization/policyAssignments
    ロールの割り当て Microsoft.Authorization/roleAssignments
    ARM テンプレート モジュール、入れ子になったテンプレート、またはリンクされたテンプレート
    リソース グループ Microsoft.Resources/resourceGroups

    ブループリントが割り当てられているスコープと一致するように、Bicep ファイル内の適切なtargetScope (たとえば、subscription) を設定します。

  3. テンプレートスペックとしてテンプレートを発行します。 変換されたテンプレートからテンプレート スペックを作成します。 テンプレート スペックは、テンプレートとバージョンをAzureに格納します。 詳細については、「Azure Resource Manager テンプレート スペックを参照してください。

    Azure CLI を使用する場合:

    az ts create \
      --name blueprint-migration \
      --version 1.0.0 \
      --resource-group myResourceGroup \
      --location westus2 \
      --template-file ./main.bicep
    

    Azure PowerShell の使用:

    New-AzTemplateSpec `
      -Name blueprint-migration `
      -Version 1.0.0 `
      -ResourceGroupName myResourceGroup `
      -Location westus2 `
      -TemplateFile ./main.bicep
    
  4. デプロイ スタックを使用してテンプレート スペックをデプロイします。 デプロイ スタックを通じてテンプレート スペックをデプロイすると、ブループリント ロックと同等のライフサイクル管理と拒否割り当て保護が得られます。 リソース ID でテンプレート スペックを参照します。 --deny-settings-mode (DenySettingsMode) 設定では、ブループリント ロックの動作が再現されます (denyDeleteは "Do Not Delete" に似ています。denyWriteAndDeleteは "読み取り専用" に似ています)。 詳細については、「管理対象リソースを削除から保護する」を参照してください。

    Azure CLI を使用する場合:

    az stack sub create \
      --name blueprint-migration-stack \
      --location westus2 \
      --template-spec "/subscriptions/<subscriptionId>/resourceGroups/myResourceGroup/providers/Microsoft.Resources/templateSpecs/blueprint-migration/versions/1.0.0" \
      --deny-settings-mode denyDelete \
      --action-on-unmanage deleteResources
    

    Azure PowerShell の使用:

    New-AzSubscriptionDeploymentStack `
      -Name blueprint-migration-stack `
      -Location westus2 `
      -TemplateSpecId "/subscriptions/<subscriptionId>/resourceGroups/myResourceGroup/providers/Microsoft.Resources/templateSpecs/blueprint-migration/versions/1.0.0" `
      -DenySettingsMode DenyDelete `
      -ActionOnUnmanage DeleteResources
    
  5. ブループリントを確認して使用を停止します。

    1. デプロイ スタックによって予想されるリソースが作成され、拒否設定が適用されていることを確認します。
    2. 対象スコープでポリシーとロール割り当てが設定されていることを確認します。
    3. 確認した後、元のブループリントの割り当てと定義を削除します (まだエクスポートしていない場合は、最初にエクスポートします)。

代わりに Git リポジトリを使用する場合

テンプレートをAzureに格納するのではなく、ソース管理とプル要求のレビューを優先する場合は、変換されたBicep ファイルを Git リポジトリに保持し、パイプラインから直接デプロイ スタックでデプロイできます。 テンプレート スペックと Git リポジトリはどちらもバージョン管理を提供します。テンプレート スペックを選択してAzure内でテンプレートを共有し、Git をコードとして管理します。

次のステップ