使用 Azure PowerShell 启用 Azure VM 扩展

本文演示如何使用 Azure PowerShell 为 Linux 或 Windows 混合计算机部署、更新和卸载已启用 Azure Arc 的服务器支持的 Azure VM 扩展。

注意

已启用 Azure Arc 的服务器不支持管理 VM 扩展,也不支持将 VM 扩展部署到 Azure 虚拟机。 对于 Azure VM,请查看下面的 VM 扩展概述一文。

必备条件

使用 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

后续步骤