VM 拡張機能を含むリソース グループをエクスポートする

Azure リソース グループを新しい Azure Resource Manager テンプレートにエクスポートして、再デプロイすることができます。 エクスポート プロセスでは、既存のリソースが解釈され、Resource Manager テンプレートが作成されます。これは、デプロイされると同様のリソース グループになります。 仮想マシン (VM) 拡張機能を含むリソース グループに対してエクスポート オプションを使用する場合は、拡張機能の互換性や保護された設定などの項目を考慮する必要があります。

この記事では、仮想マシン拡張機能のリソース グループのエクスポート プロセスのしくみについて詳しく説明します。 サポートされる拡張機能の一覧と、セキュリティで保護されたデータを処理する方法の詳細が含まれています。

サポートされる VM 拡張機能

さまざまな VM 拡張機能を利用できます。 ただし、すべての拡張機能が自動化スクリプト機能を使用して Resource Manager テンプレートにエクスポートできるわけではありません。 サポートされていない仮想マシン拡張機能は、エクスポートされたテンプレートに手動で配置する必要があります。

次の拡張機能は、自動化スクリプト機能を使用してエクスポートできます。

Acronis Backup、Acronis Backup Linux、BGInfo、BMC Control-M Agent Linux、BMC Control-M Agent Windows、Chef Client、Custom Script、Custom Script Extension、Custom Script for Linux、Datadog Linux Agent、Datadog Windows Agent、Docker Extension、DSC Extension、Dynatrace Linux、Dynatrace Windows、HPE Security Application Defender for Cloud、IaaS Antimalware、IaaS Diagnostics、Linux Chef Client、Linux Diagnostic、OS Patching for Linux、Puppet Agent、Site24x7 APM Insight、Site24x7 Linux Server、Site24x7 Windows Server、Trend Micro DSA、Trend Micro DSA Linux、VM Access For Linux、VM Access For Linux、VM Snapshot、VM Snapshot Linux

リソース グループをエクスポートする

リソース グループを再利用可能なテンプレートにエクスポートするには、次の手順を実行します。

  1. Azure portal にサインインします。
  2. [ハブ] メニューの [リソース グループ] を選択します。
  3. 一覧から、ターゲット リソース グループを選択します。
  4. [リソース グループ] ペインで、[自動] セクションの [テンプレートのエクスポート] を選択します。

リソース グループをテンプレートにエクスポートするための選択項目を示すスクリーンショット。

Azure Resource Manager の自動化スクリプトは、Resource Manager テンプレート、パラメーター ファイル、いくつかのサンプル デプロイ スクリプト (PowerShell や Azure CLI スクリプトなど) を生成します。 この時点で、[ダウンロード] ボタンでエクスポートされたテンプレートをダウンロードすることも、テンプレート ライブラリにテンプレートを追加することも、[デプロイ] ボタンでテンプレートを再デプロイすることもできます。

保護された設定を構成する

多くの Azure VM 拡張機能には保護された設定の構成が含まれていて、資格情報や構成文字列などの機密データを暗号化します。 保護された設定は、Automation スクリプトではエクスポートされません。 必要に応じて、保護された設定をエクスポートされたテンプレートに再度挿入します。

手順 1: テンプレート パラメーターを削除する

リソース グループをエクスポートする場合、エクスポートされる保護された設定に値を指定するテンプレート パラメーターが 1 つ作成されます。 このパラメーターは削除できます。

このパラメーターを削除するには、パラメーターの一覧を調べて、次に示す JSON の例に類似したものを削除します。

"extensions_extensionname_protectedSettings": {
	"defaultValue": null,
	"type": "SecureObject"
}

手順 2: 保護された設定のプロパティを取得する

保護された設定にはそれぞれ一連の必須プロパティがあるため、これらの一連のプロパティを収集する必要があります。 保護された設定の構成の各パラメーターについては、GitHub の Azure Resource Manager のスキーマを参照してください。 このスキーマには、この記事の概要セクションに示した拡張機能のパラメーター セットのみが含まれています。

スキーマ リポジトリ内で、目的の拡張機能を検索します。 拡張機能の protectedSettings オブジェクトを見つけたら、各パラメーターをメモします。 次の IaasDiagnostic 拡張機能の例では、必須パラメーターは storageAccountNamestorageAccountKeystorageAccountEndPoint です。

"protectedSettings": {
	"type": "object",
	"properties": {
		"storageAccountName": {
			"type": "string"
		},
		"storageAccountKey": {
			"type": "string"
		},
		"storageAccountEndPoint": {
			"type": "string"
		}
	},
	"required": [
		"storageAccountName",
		"storageAccountKey",
		"storageAccountEndPoint"
	]
}

手順 3: 保護された構成を再作成する

エクスポートされたテンプレートで、protectedSettings を検索します。 エクスポートされた保護された設定のオブジェクトを、拡張機能の必須パラメーターとそれぞれの値を含む新しいオブジェクトに置き換えます。

この IaasDiagnostic 拡張機能の例では、新しい保護された設定の構成は、次の例のようになります。

"protectedSettings": {
	"storageAccountName": "[parameters('storageAccountName')]",
	"storageAccountKey": "[parameters('storageAccountKey')]",
	"storageAccountEndPoint": "https://core.windows.net"
}

最終的な拡張機能のリソースは、次の JSON の例のようになります。

{
	"name": "Microsoft.Insights.VMDiagnosticsSettings",
	"type": "extensions",
	"location": "[resourceGroup().location]",
	"apiVersion": "[variables('apiVersion')]",
	"dependsOn": [
		"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
	],
	"tags": {
		"displayName": "AzureDiagnostics"
	},
	"properties": {
		"publisher": "Microsoft.Azure.Diagnostics",
		"type": "IaaSDiagnostics",
		"typeHandlerVersion": "1.5",
		"autoUpgradeMinorVersion": true,
		"settings": {
			"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), variables('vmName'), variables('wadcfgxend')))]",
			"storageAccount": "[parameters('existingdiagnosticsStorageAccountName')]"
		},
		"protectedSettings": {
			"storageAccountName": "[parameters('storageAccountName')]",
			"storageAccountKey": "[parameters('storageAccountKey')]",
			"storageAccountEndPoint": "https://core.windows.net"
		}
	}
}

テンプレート パラメーターを使用してプロパティ値を指定する場合は、それらを作成する必要があります。 保護された設定の値用のテンプレート パラメーターを作成する際は、機密性の高い値が保護されるように、SecureString パラメーター型を使用してください。 パラメーターの使用の詳細については、「Azure Resource Manager のテンプレートの作成」を参照してください。

この IaasDiagnostic 拡張機能の例では、Resource Manager テンプレートのパラメーター セクションに次のパラメーターが作成されます。

"storageAccountName": {
	"defaultValue": null,
	"type": "SecureString"
},
"storageAccountKey": {
	"defaultValue": null,
	"type": "SecureString"
}

この時点で、任意のテンプレート デプロイ方法を使用して、テンプレートをデプロイできます。