閱讀英文版本

分享方式:


匯出包含 VM 擴充功能的資源群組

您可以將 Azure 資源群組導出至新的 Azure Resource Manager 範本,然後重新部署。 匯出程序會解譯現有的資源,並且在部署導致類似的資源群組時,建立 Resource Manager 範本。 當您針對包含虛擬機器 (VM) 擴充功能的資源群組使用匯出選項時,您必須考慮延伸模組相容性和受保護設定等項目。

本文詳細說明資源群組匯出程式如何針對虛擬機器擴充功能運作。 其中包含支援的延伸模組清單,以及如何處理受保護資料的詳細資料。

支援的 VM 擴充功能

有許多 VM 擴充功能可供使用。 您無法使用自動化指令碼功能將所有擴充功能匯出至 Resource Manager 範本。 如果虛擬機器擴充功能不受支援,您必須手動將其移回匯出的範本。

您可以使用自動化指令碼功能來匯出下列擴充功能:

Acronis Backup、Acronis Backup Linux、BGInfo、BMC Control-M 代理程式 Linux、BMC Control-M 代理程式 Windows、Chef 用戶端、自訂指令碼、自訂指令碼延伸模組、Linux 自訂指令碼、Datadog linux 代理程式、Datadog Windows 代理程式、Docker 擴充功能、DSC 延伸模組、Dynatrace Linux、Dynatrace Windows、適用於雲端的 HPE 安全性應 Defender、IaaS 反惡意程式碼、IaaS 診斷、Linux Chef 用戶端、Linux 診斷、OS Patching For Linux、Puppet 代理程式、Site24x7 APM Insight、Site24x7 Linux 伺服器、Site24x7 Windows 伺服器、Trend Micro DSA、Trend Micro DSA Linux、適用於 Linux 的 VM 存取、適用於 Linux 的 VM 存取、VM 快照集、VM 快照集 Linux

匯出資源群組

若要將資源群組匯出至可重複使用的範本中,請完成下列步驟︰

  1. 登入 Azure 入口網站。
  2. 在 [中樞] 功能表上,選取 [資源群組]
  3. 從清單中選取目標資源群組。
  4. 在 [資源群組] 窗格中,選取 [自動化] 區段下的 [匯出範本]

顯示將資源群組匯出至範本之選取項目的螢幕快照。

Azure Resource Manager 自動化指令碼會產生 Resource Manager 範本、參數檔案以及數個範例部署指令碼,例如 PowerShell 和 Azure CLI 指令碼。 此時,您可以使用 [下載] 按鈕下載匯出的範本,將範本新增至範本連結庫,或使用 [部署] 按鈕重新部署範本。

設定受保護的設定

許多 Azure VM 擴充功能都包含受保護的設定組態,以加密敏感性資料,例如認證及組態字串。 使用自動化指令碼無法匯出受保護的設定。 如有必要,請將受保護的設定重新插入匯出的範本。

步驟 1:移除範本參數

在您匯出資源群組時,系統會建立單一範本參數,以提供值給匯出的受保護設定。 您可以移除此參數。

若要移除參數,請瀏覽參數清單,並刪除類似此 JSON 範例的參數清單:

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

步驟 2:取得受保護設定的屬性

因為每個受保護的設定都有一組必要的屬性,因此您必須收集這些屬性的清單。 您可以在 GitHub 上的 Azure Resource Manager 結構描述中找到每個受保護設定組態的參數。 此架構僅包含本文概觀一節所列的擴充功能參數集。

從結構描述存放庫內,搜尋所需的擴充功能。 找到擴充功能的 protectedSettings 物件之後,請記下每個參數。 在擴充功能 IaasDiagnostic 的下列範例中,必要的參數為 storageAccountNamestorageAccountKeystorageAccountEndPoint

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

步驟 3 - 重新建立受保護的組態

匯出的範本上,搜尋 protectedSettings。 將匯出的受保護設定物件取代為新的物件,此物件包含必要的擴充功能參數和每個參數的值。

IaasDiagnostic 擴充功能的範例中,新的受保護設定組態會如以下範例所示︰

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

最終的擴充功能資源會如以下 JSON 範例所示︰

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 範本的 parameters 區段中會建立下列參數:

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

此時,您可以使用任何範本部署方法來部署範本。