使用 Azure PowerShell 启用 Azure VM 扩展
本文演示如何使用 Azure PowerShell 为 Linux 或 Windows 混合计算机部署、更新和卸载已启用 Azure Arc 的服务器支持的 Azure VM 扩展。
注意
已启用 Azure Arc 的服务器不支持管理 VM 扩展,也不支持将 VM 扩展部署到 Azure 虚拟机。 对于 Azure VM,请查看下面的 VM 扩展概述一文。
必备条件
- 配备 Azure PowerShell 的计算机。 有关说明,请参阅安装和配置 Azure PowerShell。
使用 Azure PowerShell 在已启用 Azure Arc 的服务器管理的混合服务器上管理 VM 扩展之前,需要安装 Az.ConnectedMachine
模块。 这些管理操作可以从工作站执行,无需在已启用 Azure Arc 的服务器上运行。
在已启用 Azure Arc 的服务器上运行以下命令:
Install-Module -Name Az.ConnectedMachine
。
安装完成后,将返回以下消息:
The installed extension 'Az.ConnectedMachine' is experimental and not covered by customer support. Please use with discretion.
启用扩展
若要在已启用 Azure Arc 的服务器上启用 VM 扩展,请将 New-AzConnectedMachineExtension 与 -Name
、-ResourceGroupName
、-MachineName
、-Location
、-Publisher
、-ExtensionType
和 -Settings
参数一起使用。
以下示例在已启用 Azure Arc 的 Linux 服务器上启用 Log Analytics VM 扩展:
$Setting = @{ "workspaceId" = "workspaceId" }
$protectedSetting = @{ "workspaceKey" = "workspaceKey" }
New-AzConnectedMachineExtension -Name OMSLinuxAgent -ResourceGroupName "myResourceGroup" -MachineName "myMachineName" -Location "regionName" -Publisher "Microsoft.EnterpriseCloud.Monitoring" -Settings $Setting -ProtectedSetting $protectedSetting -ExtensionType "OmsAgentForLinux"
若要在已启用 Azure Arc 的 Windows 服务器上启用 Log Analytics VM 扩展,请在上一示例中将 -ExtensionType
参数的值更改为 "MicrosoftMonitoringAgent"
。
以下示例将在已启用 Azure Arc 的服务器上启用自定义脚本扩展:
$Setting = @{ "commandToExecute" = "powershell.exe -c Get-Process" }
New-AzConnectedMachineExtension -Name "custom" -ResourceGroupName "myResourceGroup" -MachineName "myMachineName" -Location "regionName" -Publisher "Microsoft.Compute" -Settings $Setting -ExtensionType CustomScriptExtension
以下示例在已启用 Azure Arc 的 Windows 服务器上启用 Microsoft Antimalware 扩展:
$Setting = @{ "AntimalwareEnabled" = $true }
New-AzConnectedMachineExtension -Name "IaaSAntimalware" -ResourceGroupName "myResourceGroup" -MachineName "myMachineName" -Location "regionName" -Publisher "Microsoft.Azure.Security" -Settings $Setting -ExtensionType "IaaSAntimalware"
Key Vault VM 扩展
警告
在 settings.json 中将 \
添加到 "
将导致 akvvm_service 失败并出现以下错误:[CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
虽然 Powershell 用户通常使用 \"
序列来转义其他代码块中的引号,但你需要避免在 settings.json 文件中使用该格式设置。
以下示例将在已启用 Azure Arc 的服务器上启用 Key Vault VM 扩展:
# Build settings
$settings = @{
secretsManagementSettings = @{
observedCertificates = @(
"observedCert1"
)
certificateStoreLocation = "myMachineName" # For Linux use "/var/lib/waagent/Microsoft.Azure.KeyVault.Store/"
certificateStore = "myCertificateStoreName"
pollingIntervalInS = "pollingInterval"
}
authenticationSettings = @{
msiEndpoint = "http://localhost:40342/metadata/identity"
}
}
$resourceGroup = "resourceGroupName"
$machineName = "myMachineName"
$location = "regionName"
# Start the deployment
New-AzConnectedMachineExtension -ResourceGroupName $resourceGroup -Location $location -MachineName $machineName -Name "KeyVaultForWindows or KeyVaultforLinux" -Publisher "Microsoft.Azure.KeyVault" -ExtensionType "KeyVaultforWindows or KeyVaultforLinux" -Setting $settings
Datadog VM 扩展
以下示例将在已启用 Azure Arc 的服务器上启用 Datadog VM 扩展:
$resourceGroup = "resourceGroupName"
$machineName = "machineName"
$location = "machineRegion"
$osType = "Windows" # change to Linux if appropriate
$settings = @{
# change to your preferred Datadog site
site = "us3.datadoghq.com"
}
$protectedSettings = @{
# change to your Datadog API key
api_key = "APIKEY"
}
New-AzConnectedMachineExtension -ResourceGroupName $resourceGroup -Location $location -MachineName $machineName -Name "Datadog$($osType)Agent" -Publisher "Datadog.Agent" -ExtensionType "Datadog$($osType)Agent" -Setting $settings -ProtectedSetting $protectedSettings
列出已安装的扩展
若要获取已启用 Azure Arc 的服务器上的 VM 扩展列表,请将 Get-AzConnectedMachineExtension 与 -MachineName
和 -ResourceGroupName
参数一起使用。
示例:
Get-AzConnectedMachineExtension -ResourceGroupName myResourceGroup -MachineName myMachineName
Name Location PropertiesType ProvisioningState
---- -------- -------------- -----------------
custom chinaeast2 CustomScriptExtension Succeeded
更新扩展配置
要重新配置已安装的扩展,你可以使用 Update-AzConnectedMachineExtension 与 -Name
、-MachineName
、-ResourceGroupName
和 -Settings
参数一起使用。
请参阅 cmdlet 的参考文章,了解提供所需扩展更改的不同方法。
升级扩展
受支持 VM 扩展的新版本发布后,可将该扩展升级到这一最新版本。 若要升级 VM 扩展,请将 Update-AzConnectedExtension 与 -MachineName
、-ResourceGroupName
和 -ExtensionTarget
参数配合使用。
对于 -ExtensionTarget
参数,需要指定扩展以及可用的最新版本。 若要确定某个扩展的最新可用版本,请在 Azure 门户中访问选定的启用了 Arc 的服务器的“扩展”页,或者运行 Get-AzVMExtensionImage。 可以在单个升级请求中指定多个扩展,具体方法为提供以逗号分隔的扩展列表,该列表由发布者和类型(以句点分隔)以及每个扩展的目标版本定义。
如果适用于 Windows 的 Log Analytics 代理扩展有更新的可用版本,并且你要升级该扩展,请运行以下命令:
Update-AzConnectedExtension -MachineName "myMachineName" -ResourceGroupName "myResourceGroup" -ExtensionTarget '{\"Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent\":{\"targetVersion\":\"1.0.18053.0\"}}'
可以通过运行命令 Get-AzConnectedMachineExtension,随时查看已安装的 VM 扩展的版本。 TypeHandlerVersion
属性值表示扩展的版本。
删除扩展
若要删除已启用 Azure Arc 的服务器上安装的 VM 扩展,请将 Remove-AzConnectedMachineExtension 与 -Name
、-MachineName
和 -ResourceGroupName
参数一起使用。
例如,要删除适用于 Linux 的日志分析 VM 扩展,请运行以下命令:
Remove-AzConnectedMachineExtension -MachineName myMachineName -ResourceGroupName myResourceGroup -Name OmsAgentforLinux
后续步骤
你可以使用 Azure CLI、Azure 门户或 Azure 资源管理器模板来部署、管理和删除 VM 扩展。
可以在 VM 扩展故障排除指南中找到故障排除信息。