本文說明如何使用 Azure Resource Manager 範本 (ARM 範本 ) 將虛擬機器 (VM) 擴充功能 部署至已啟用 Azure Arc 的伺服器。
若要使用 ARM 範本將擴充功能部署至已啟用 Arc 的伺服器,您可以將延伸模組新增至範本,並使用範本部署來執行它們。 您可以使用 Azure PowerShell 在 Linux 或 Windows 連線的機器上部署擴充功能。
本文說明如何使用範本檔案,將數個不同的 VM 延伸模組部署至已啟用 Arc 的伺服器,以及一些延伸模組的個別參數檔案。 在部署之前,將範例中的範例值取代為您自己的值。
部署命令
這些範例 PowerShell 命令會根據 ARM 範本中的資訊,在資源群組內的所有連線機器上安裝擴充功能。 命令使用 TemplateFile 參數來指定範本。 如果需要參數檔案, TemplateParameterFile 則會包含 參數,以指定包含參數和參數值的檔案。 請將佔位符替換為適合您部署的值。
若要部署 ARM 範本和參數檔案,請使用下列命令,將範例值取代為您自己的值:
New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "<template-filename.json>" -TemplateParameterFile "<parameter-filename.json>"
例如:
New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\AzureMonitorAgent.json" -TemplateParameterFile "D:\Azure\Templates\AzureMonitorAgentParms.json"
若要部署不含參數檔案的 ARM 範本,請使用下列命令,將範例值取代為您自己的值:
New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "<template-filename.json>>"
例如:
New-AzResourceGroupDeployment -ResourceGroupName "<ContosoEngineering>" -TemplateFile "D:\Azure\Templates\DependencyAgent.json"
部署 Azure 監視器代理程式 VM 擴充功能
若要部署 Azure 監視器代理程式,請使用下列其中一個範例範本,在 Linux 或 Windows 上安裝代理程式。
適用於 Linux 的 Azure 監視器代理程式範本檔案
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"workspaceId": {
"type": "string"
},
"workspaceKey": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('vmName'),'/AzureMonitorLinuxAgent')]",
"type": "Microsoft.Compute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2021-11-01",
"properties": {
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorLinuxAgent",
"enableAutomaticUpgrade": true,
"settings": {
"workspaceId": "[parameters('workspaceId')]"
},
"protectedSettings": {
"workspaceKey": "[parameters('workspaceKey')]"
}
}
}
]
}
適用於 Windows 的 Azure 監視器代理程式範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"workspaceId": {
"type": "string"
},
"workspaceKey": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('vmName'),'/AzureMonitorWindowsAgent')]",
"type": "Microsoft.Compute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2021-11-01",
"properties": {
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorWindowsAgent",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"workspaceId": "[parameters('workspaceId')]"
},
"protectedSettings": {
"workspaceKey": "[parameters('workspaceKey')]"
}
}
}
]
}
Azure 監視器代理程序參數檔案
此參數檔案可用於Linux和 Windows。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"value": "<vmName>"
},
"location": {
"value": "<region>"
},
"workspaceId": {
"value": "<MyWorkspaceID>"
},
"workspaceKey": {
"value": "<MyWorkspaceKey>"
}
}
}
儲存範本和參數檔案,並使用部署的適當值編輯參數檔案。 然後執行本文稍早找到的 PowerShell 部署命令 ,將 Azure 監視器代理程式擴充功能安裝到連線的電腦。
部署自定義腳本擴充功能
若要使用自定義腳本擴充功能,請部署下列其中一個適用於Linux和 Windows 的範例範例範本。 如需自定義腳本擴充功能的詳細資訊,請參閱 適用於Linux的自定義腳本擴充功能 或 適用於Windows的自定義腳本擴充功能。 在搭配混合式機器使用此擴充功能時,您應該瞭解幾個不同的特性:
- Azure VM 自定義腳本擴充功能支援的作系統清單不適用於已啟用 Azure Arc 的伺服器。 請參閱已啟用 Azure Arc 的伺服器支援的作業系統清單。
- 關於透過傳統部署模型建立的 Azure 虛擬機擴展集或 VM 的設定詳細數據不適用。
- 如果您的機器需要從外部下載腳本,而且只能透過 Proxy 伺服器通訊,您必須 設定連線的電腦代理程式 來設定 Proxy 伺服器的環境變數。
「自訂指令碼擴充功能」組態會指定指令碼位置和要執行命令等項目。 此組態是在下列範本中指定。
適用於Linux的自定義腳本延伸模組範本檔案
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"fileUris": {
"type": "array"
},
"commandToExecute": {
"type": "securestring"
}
},
"resources": [
{
"name": "[concat(parameters('vmName'),'/CustomScript')]",
"type": "Microsoft.HybridCompute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2022-03-10",
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"autoUpgradeMinorVersion": true,
"settings": {},
"protectedSettings": {
"commandToExecute": "[parameters('commandToExecute')]",
"fileUris": "[parameters('fileUris')]"
}
}
}
]
}
Windows 的自定義腳本範本檔案
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"fileUris": {
"type": "string"
},
"arguments": {
"type": "securestring",
"defaultValue": " "
}
},
"variables": {
"UriFileNamePieces": "[split(parameters('fileUris'), '/')]",
"firstFileNameString": "[variables('UriFileNamePieces')[sub(length(variables('UriFileNamePieces')), 1)]]",
"firstFileNameBreakString": "[split(variables('firstFileNameString'), '?')]",
"firstFileName": "[variables('firstFileNameBreakString')[0]]"
},
"resources": [
{
"name": "[concat(parameters('vmName'),'/CustomScriptExtension')]",
"type": "Microsoft.HybridCompute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2022-03-10",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": "[split(parameters('fileUris'), ' ')]"
},
"protectedSettings": {
"commandToExecute": "[concat ('powershell -ExecutionPolicy Unrestricted -File ', variables('firstFileName'), ' ', parameters('arguments'))]"
}
}
}
]
}
自定義腳本參數檔案
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "customScriptExt",
"label": "Add Custom Script Extension",
"elements": [
{
"name": "fileUris",
"type": "Microsoft.Common.FileUpload",
"label": "Script files",
"toolTip": "The script files that will be downloaded to the virtual machine.",
"constraints": {
"required": false
},
"options": {
"multiple": true,
"uploadMode": "url"
},
"visible": true
},
{
"name": "commandToExecute",
"type": "Microsoft.Common.TextBox",
"label": "Command",
"defaultValue": "sh script.sh",
"toolTip": "The command to execute, for example: sh script.sh",
"constraints": {
"required": true
},
"visible": true
}
]
}
],
"outputs": {
"vmName": "[vmName()]",
"location": "[location()]",
"fileUris": "[steps('customScriptExt').fileUris]",
"commandToExecute": "[steps('customScriptExt').commandToExecute]"
}
}
}
儲存範本和參數檔案,並使用部署的適當值編輯參數檔案。 然後執行本文稍早找到的 PowerShell 部署命令 ,將自定義腳本擴充功能安裝到連線的電腦。
部署相依性代理程式延伸模組
若要使用 Azure 監視器相依性代理程式擴充功能,請針對 Linux 和 Windows 執行下列其中一個範例。 如需相依性代理程式的詳細資訊,請參閱 Azure 監視器代理程式概觀。
Linux 的相依性代理程式範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"metadata": {
"description": "The name of existing Linux machine."
}
}
},
"resources": [
{
"type": "Microsoft.HybridCompute/machines/extensions",
"name": "[concat(parameters('vmName'),'/DAExtension')]",
"apiVersion": "2022-03-10",
"location": "[resourceGroup().location]",
"dependsOn": [
],
"properties": {
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentLinux",
"enableAutomaticUpgrade": true
}
}
],
"outputs": {
}
}
適用於 Windows 的相依性代理程式範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"metadata": {
"description": "The name of existing Windows machine."
}
}
},
"resources": [
{
"type": "Microsoft.HybridCompute/machines/extensions",
"name": "[concat(parameters('vmName'),'/DAExtension')]",
"apiVersion": "2022-03-10",
"location": "[resourceGroup().location]",
"dependsOn": [
],
"properties": {
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"enableAutomaticUpgrade": true
}
}
],
"outputs": {
}
}
儲存範本,然後執行本文稍早找到的 PowerShell部署命令 ,將相依性代理程式擴充功能安裝到連線的電腦。
部署 Azure Key Vault 擴充功能
下列 JSON 顯示 Azure Key Vault 擴充功能的架構。 此延伸模組不需要受保護的設定,因為其所有設定都會被視為公開資訊。 擴充功能需要受監視的憑證清單、輪詢頻率和目的地證書存儲。
適用於 Linux 的 Azure Key Vault 範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"autoUpgradeMinorVersion":{
"type": "bool"
},
"pollingIntervalInS":{
"type": "int"
},
"certificateStoreName":{
"type": "string"
},
"certificateStoreLocation":{
"type": "string"
},
"observedCertificates":{
"type": "string"
},
"msiEndpoint":{
"type": "string"
},
"msiClientId":{
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.HybridCompute/machines/extensions",
"name": "[concat(parameters('vmName'),'/KVVMExtensionForLinux')]",
"apiVersion": "2022-03-10",
"location": "[parameters('location')]",
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <ignored on linux>,
"certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
},
"authenticationSettings": {
"msiEndpoint": "http://localhost:40342/metadata/identity"
}
}
}
}
]
}
適用於 Windows 的 Azure Key Vault 範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string"
},
"location": {
"type": "string"
},
"autoUpgradeMinorVersion":{
"type": "bool"
},
"pollingIntervalInS":{
"type": "int"
},
"certificateStoreName":{
"type": "string"
},
"linkOnRenewal":{
"type": "bool"
},
"certificateStoreLocation":{
"type": "string"
},
"requireInitialSync":{
"type": "bool"
},
"observedCertificates":{
"type": "string"
},
"msiEndpoint":{
"type": "string"
},
"msiClientId":{
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.HybridCompute/machines/extensions",
"name": "[concat(parameters('vmName'),'/KVVMExtensionForWindows')]",
"apiVersion": "2022-03-10",
"location": "[parameters('location')]",
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": "3600",
"certificateStoreName": <certificate store name, e.g.: "MY">,
"linkOnRenewal": <Only Windows. This feature ensures s-channel binding when certificate renews, without necessitating a re-deployment. e.g.: false>,
"certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
"requireInitialSync": <initial synchronization of certificates e.g.: true>,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net"
},
"authenticationSettings": {
"msiEndpoint": "http://localhost:40342/metadata/identity"
}
}
}
}
]
}
注意
觀察到的憑證 URL 的格式應為 https://myVaultName.vault.azure.net/secrets/myCertName。 原因是 /secrets 路徑會傳回完整的憑證,包括私鑰,而 /certificates 路徑則不會傳回。 如需憑證的詳細資訊,請參閱 Azure Key Vault 密鑰、秘密和憑證概觀。
儲存範本,並根據需要編輯以適應您的環境。 然後執行本文稍早找到的 PowerShell 部署命令 ,將 Azure Key Vault 擴充功能安裝到連線的電腦。
小提示
Azure Key Vault 擴充功能需要分配系統指派的身分識別,以便驗證 Key Vault。 如需詳細資訊,請參閱 使用已啟用 Azure Arc 的伺服器對 Azure 資源進行驗證。
相關內容
- 深入瞭解 已啟用 Azure Arc 的伺服器支援的 VM 擴充功能。
- 瞭解如何使用 Azure PowerShell、Azure 入口網站或 Azure CLI 來部署、管理及移除 VM 擴充功能。
- 在 針對 VM 擴充功能進行疑難解答的指南中探索疑難解答資訊。