既存のリソースから Azure Resource Manager テンプレートをエクスポートするExport an Azure Resource Manager template from existing resources

この記事では、サブスクリプション内の既存のリソースから Resource Manager テンプレートをエクスポートする方法について説明します。In this article, you learn how to export a Resource Manager template from existing resources in your subscription. 生成されたそのテンプレートを使用して、テンプレートの構文について理解を深めることができます。You can use that generated template to gain a better understanding of template syntax.

テンプレートをエクスポートするには、次の 2 とおりの方法があります。There are two ways to export a template:

  • デプロイに使用した実際のテンプレートをエクスポートできます。You can export the actual template used for deployment. エクスポートしたテンプレートには、元のテンプレートで定義されたのと同じパラメーターと変数がすべて含まれます。The exported template includes all the parameters and variables exactly as they appeared in the original template. この方法は、ポータル経由でリソースをデプロイ済みで、そのリソースの作成に使ったテンプレートを確認したい場合に便利です。This approach is helpful when you deployed resources through the portal, and want to see the template to create those resources. このテンプレートはすぐに使用できます。This template is readily usable.
  • リソース グループの現在の状態を表す生成済みのテンプレートをエクスポートできます。You can export a generated template that represents the current state of the resource group. エクスポートしたテンプレートは、デプロイに使用したテンプレートに基づいていません。The exported template is not based on any template that you used for deployment. 代わりに、リソース グループのスナップショットであるテンプレートが作成されます。Instead, it creates a template that is a snapshot of the resource group. エクスポートしたテンプレートにはハードコーディングされた多くの値が含まれ、おそらく、通常定義するのと同程度のパラメーターは含まれません。The exported template has many hard-coded values and probably not as many parameters as you would typically define. この方法は、デプロイ後にリソース グループを変更した場合に役立ちます。This approach is useful when you have modified the resource group after deployment. このテンプレートは通常、使用する前に変更が必要です。This template usually requires modifications before it is usable.

このトピックでは、ポータルを使って両方の方法を紹介します。This topic shows both approaches through the portal.

リソースのデプロイDeploy resources

まず、テンプレートとしてエクスポートするために使用できるリソースを Azure にデプロイします。Let's start by deploying resources to Azure that you can use for exporting as a template. テンプレートにエクスポートしたいリソース グループが既にサブスクリプション内にある場合、このセクションはスキップしてかまいません。If you already have a resource group in your subscription that you want to export to a template, you can skip this section. この記事の残りの部分では、このセクションに示されている Web アプリと SQL データベース ソリューションをデプロイ済みであることを前提としています。The remainder of this article assumes you have deployed the web app and SQL database solution shown in this section. 別のソリューションを使用する場合は、操作が若干異なる可能性がありますが、テンプレートをエクスポートする手順は同じです。If you use a different solution, your experience might be a little different, but the steps to export a template are the same.

  1. Azure Portal[+ 新規] を選択します。In the Azure portal, select New.

    [+ 新規] の選択

  2. [web app + SQL](Web アプリと SQL) を検索して、使用可能なオプションから選択します。Search for web app + SQL and select it from the available options.

    [web app + SQL](Web アプリと SQL) の検索

  3. [作成]を選択します。Select Create.

    [作成] の選択

  4. Web アプリと SQL データベースに必要な値を入力します。Provide the required values for the web app and SQL database. [作成]を選択します。Select Create.

    Web アプリと SQL データベースの値の入力

デプロイには少し時間がかかる場合があります。The deployment may take a minute. デプロイが完了すると、サブスクリプションにこのソリューションが含まれた状態になります。After the deployment finishes, your subscription contains the solution.

デプロイ履歴からのテンプレートの表示View template from deployment history

  1. 新しいリソース グループのリソース グループ ブレードに移動します。Go to the resource group blade for your new resource group. ブレードに直前のデプロイの結果が表示されていることがわかります。Notice that the blade shows the result of the last deployment. そのリンクを選択します。Select this link.

    resource group blade

  2. グループのデプロイの履歴が表示されます。You see a history of deployments for the group. このケースでは、ブレードに表示されるデプロイはおそらく 1 つだけです。In your case, the blade probably lists only one deployment. このデプロイを選択します。Select this deployment.

    最終デプロイ

  3. ブレードにデプロイの概要が表示されます。The blade displays a summary of the deployment. 概要には、デプロイの状態とその操作、およびパラメーターに指定した値が含まれています。The summary includes the status of the deployment and its operations and the values that you provided for parameters. デプロイに使用されたテンプレートを表示するには、 [テンプレートの表示]を選択します。To see the template that you used for the deployment, select View template.

    view deployment summary

  4. Resource Manager によって、次の 7 つのファイルが取得されます。Resource Manager retrieves the following seven files for you:

    1. Template - ソリューションのインフラストラクチャを定義するテンプレート。Template - The template that defines the infrastructure for your solution. ポータルでストレージ アカウントを作成したときに、Resource Manager はテンプレートを使用してそれをデプロイし、今後参照できるようにテンプレートを保存しました。When you created the storage account through the portal, Resource Manager used a template to deploy it and saved that template for future reference.
    2. Parameters - デプロイ中に値を渡すために使用できるパラメーター ファイル。Parameters - A parameter file that you can use to pass in values during deployment. 初回デプロイ時に指定した値が含まれています。It contains the values that you provided during the first deployment. これらの値はどれも、テンプレートを再デプロイするときに変更できます。You can change any of these values when you redeploy the template.
    3. CLI - テンプレートをデプロイするために使用できる Azure CLI (コマンド ライン インターフェイス) スクリプト ファイル。CLI - An Azure command-line-interface (CLI) script file that you can use to deploy the template.
    4. CLI 2.0 - テンプレートをデプロイするために使用することができる Azure CLI (コマンド ライン インターフェイス) スクリプト ファイル。CLI 2.0 - An Azure command-line-interface (CLI) script file that you can use to deploy the template.
    5. PowerShell - テンプレートをデプロイするために使用できる Azure PowerShell スクリプト ファイル。PowerShell - An Azure PowerShell script file that you can use to deploy the template.
    6. .NET - テンプレートをデプロイするために使用できる .NET クラス。.NET - A .NET class that you can use to deploy the template.
    7. Ruby - テンプレートをデプロイするために使用できる Ruby クラス。Ruby - A Ruby class that you can use to deploy the template.

      ファイルは、ブレードのリンクを通じて使用できます。The files are available through links across the blade. テンプレートは、このブレードに既定で表示されます。By default, the blade displays the template.

      [テンプレートの表示]

これは、Web アプリと SQL データベースの作成に使用した実際のテンプレートです。This template is the actual template used to create your web app and SQL database. デプロイ時にさまざまな値を指定できるパラメーターが含まれていることに注目してください。Notice it contains parameters that enable you to provide different values during deployment. テンプレートの構造の詳細については、「 Azure Resource Manager のテンプレートの作成」を参照してください。To learn more about the structure of a template, see Authoring Azure Resource Manager templates.

リソース グループからのテンプレートのエクスポートExport the template from resource group

リソースを手動で変更したり、何度もデプロイを行ってリソースを追加したりした場合、デプロイ履歴からテンプレートを取得しても、リソース グループの現在の状態が反映されていません。If you have manually changed your resources or added resources in multiple deployments, retrieving a template from the deployment history does not reflect the current state of the resource group. このセクションでは、リソース グループの現在の状態を反映したテンプレートをエクスポートする方法について説明します。This section shows you how to export a template that reflects the current state of the resource group.

注意

200 を超えるリソースが含まれるリソース グループのテンプレートをエクスポートすることはできません。You cannot export a template for a resource group that has more than 200 resources.

  1. リソース グループのテンプレートを表示するには、 [Automation スクリプト]を選択します。To view the template for a resource group, select Automation script.

    リソース グループのエクスポート

    Resource Manager は、リソース グループ内のリソースを評価し、それらのリソースのテンプレートを生成します。Resource Manager evaluates the resources in the resource group, and generates a template for those resources. テンプレート関数のエクスポートは、すべてのリソースの種類でサポートされているわけではありません。Not all resource types support the export template function. エクスポートに問題があることを示すエラーが表示される場合があります。You may see an error stating that there is a problem with the export. これらの問題に対処する方法については、「 エクスポートの問題の修正 」セクションで説明します。You learn how to handle those issues in the Fix export issues section.

  2. ここでも、ソリューションの再デプロイに使用できる 6 個のファイルが表示されます。You again see the six files that you can use to redeploy the solution. ただし、今回のテンプレートは若干異なります。However, this time the template is a little different. 生成されたテンプレートに含まれているパラメーターの数が、前のセクションのテンプレートより少ないことに注目してください。Notice that the generated template contains fewer parameters than the template in previous section. さらにこのテンプレートでは、パラメーター値を受け入れるのではなく、多数の値 (場所や SKU の値など) がハードコーディングされています。Also, many of the values (like location and SKU values) are hard-coded in this template rather than accepting a parameter value. 場合によっては、このテンプレートを再利用する前に、パラメーターをうまく活用できるようテンプレートを編集する必要があります。Before reusing this template, you might want to edit the template to make better use of parameters.

  3. このテンプレートの操作を続ける場合、2 とおりのオプションがあります。You have a couple of options for continuing to work with this template. テンプレートをダウンロードし、JSON エディターを使用してローカルで作業することができます。You can either download the template and work on it locally with a JSON editor. また、ライブラリにテンプレートを保存し、Portal を使用して作業をすることもできます。Or, you can save the template to your library and work on it through the portal.

    VS CodeVisual Studio などの JSON エディターの操作に慣れている場合は、テンプレートをローカルにダウンロードし、エディターを使用できます。If you are comfortable using a JSON editor like VS Code or Visual Studio, you might prefer downloading the template locally and using that editor. ローカルで作業する場合、[ダウンロード] を選択します。To work locally, select Download.

    download template

    JSON エディターを設定していない場合は、Portal を使用してテンプレートを編集できます。If you are not set up with a JSON editor, you might prefer editing the template through the portal. このトピックの後半部分では、Portal のライブラリにテンプレートを保存してあることを前提としています。The remainder of this topic assumes you have saved the template to your library in the portal. ただし、JSON エディターを使用してローカルで作業する場合でも、Portal を使用して作業する場合でも、テンプレートに対して行う構文の変更は同じです。However, you make the same syntax changes to the template whether working locally with a JSON editor or through the portal. Portal を使用して作業する場合、[ライブラリに追加] を選択します。To work through the portal, select Add to library.

    ライブラリに追加

    ライブラリにテンプレートを追加する際に、テンプレートの名前と説明を入力します。When adding a template to the library, give the template a name and description. 次に、[保存] を選択します。Then, select Save.

    テンプレートの値の設定

  4. ライブラリに保存したテンプレートを表示するには、[その他のサービス] を選択し、「テンプレート」と入力して結果をフィルター処理します。次に、[テンプレート] を選択します。To view a template saved in your library, select More services, type Templates to filter results, select Templates.

    テンプレートの検索

  5. 保存した名前の付いたテンプレートを選択します。Select the template with the name you saved.

    テンプレートの選択

テンプレートのカスタマイズCustomize the template

エクスポートしたテンプレートは、すべてのデプロイで同じ Web アプリと SQL データベースを作成する場合、問題なく使用できます。The exported template works fine if you want to create the same web app and SQL database for every deployment. ただし、Resource Manager に備わっている各種オプションを使用すれば、より柔軟にテンプレートをデプロイすることができます。However, Resource Manager provides options so that you can deploy templates with a lot more flexibility. この記事では、データベース管理者の名前とパスワード用のパラメーターを追加する方法について説明します。This article shows you how to add parameters for the database administrator name and password. この方法を使用すれば、テンプレートの他の値についても柔軟性が向上します。You can use this same approach to add more flexibility for other values in the template.

  1. テンプレートをカスタマイズするには、[編集] を選択します。To customize the template, select Edit.

    show template

  2. テンプレートを選択します。Select the template.

    テンプレートの編集

  3. 指定する値をデプロイ時に渡すことができるようにするには、テンプレートの parameters セクションに次の 2 つのパラメーターを追加します。To be able to pass the values that you might want to specify during deployment, add the following two parameters to the parameters section in the template:

    "administratorLogin": {
        "type": "String"
    },
    "administratorLoginPassword": {
        "type": "SecureString"
    },
    
  4. 新しいパラメーターを使用するには、resources セクションの SQL サーバー定義を置き換えます。To use the new parameters, replace the SQL server definition in the resources section. administratorLoginadministratorLoginPassword でパラメーター値が使用されるようになったことに注目してください。Notice that administratorLogin and administratorLoginPassword now use parameter values.

    {
        "comments": "Generalized from resource: '/subscriptions/{subscription-id}/resourceGroups/exportsite/providers/Microsoft.Sql/servers/tfserverexport'.",
        "type": "Microsoft.Sql/servers",
        "kind": "v12.0",
        "name": "[parameters('servers_tfserverexport_name')]",
        "apiVersion": "2014-04-01-preview",
        "location": "South Central US",
        "scale": null,
        "properties": {
            "administratorLogin": "[parameters('administratorLogin')]",
            "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
            "version": "12.0"
        },
        "dependsOn": []
    },
    
  5. テンプレートの編集が完了したら、[OK] を選択します。Select OK when you are done editing the template.

  6. [保存] を選択し、テンプレートに対する変更を保存します。Select Save to save the changes to the template.

    テンプレートの保存

  7. 更新したテンプレートを再デプロイするには、[デプロイ] を選択します。To redeploy the updated template, select Deploy.

    テンプレートのデプロイ

  8. パラメーター値を指定し、リソースのデプロイ先となるリソース グループを選択します。Provide parameter values, and select a resource group to deploy the resources to.

エクスポートの問題の修正Fix export issues

テンプレート関数のエクスポートは、すべてのリソースの種類でサポートされているわけではありません。Not all resource types support the export template function. この問題を回避するには、欠けているリソースを対象のテンプレートに手動で追加します。To resolve this issue, manually add the missing resources back into your template. エラー メッセージには、エクスポートできないリソースの種類が含まれています。The error message includes the resource types that cannot be exported. そのリソースの種類は、テンプレート リファレンスで探してください。Find that resource type in Template reference. たとえば、仮想ネットワーク ゲートウェイを手動で追加するには、Microsoft.Network/virtualNetworkGateways テンプレート リファレンスを参照してください。For example, to manually add a virtual network gateway, see Microsoft.Network/virtualNetworkGateways template reference.

注意

エクスポートの問題は、リソース グループからエクスポートする場合にのみ発生します。デプロイ履歴からのエクスポートでは発生しません。You only encounter export issues when exporting from a resource group rather than from your deployment history. 最後のデプロイがリソース グループの現在の状態を正確に表しているようであれば、リソース グループからではなく、デプロイ履歴からテンプレートをエクスポートすることをお勧めします。If your last deployment accurately represents the current state of the resource group, you should export the template from the deployment history rather than from the resource group. 単一のテンプレートで定義されていない変更をリソース グループに加えた場合にのみ、リソース グループからエクスポートしてください。Only export from a resource group when you have made changes to the resource group that are not defined in a single template.

次のステップNext steps

ポータルで作成したリソースからテンプレートをエクスポートする方法について説明しました。You have learned how to export a template from resources that you created in the portal.