你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure PowerShell 启用 Azure VM 扩展

本文介绍如何部署、更新和卸载已启用 Azure Arc 的服务器支持的 Azure 虚拟机 (VM) 扩展。 它演示如何使用 Azure PowerShell 在 Linux 或 Windows 混合计算机上执行这些任务。

注意

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

先决条件

  • 配备 Azure PowerShell 的计算机。 有关说明,请参阅安装和配置 Azure PowerShell

  • Az.ConnectedMachine 模块。 使用 Azure PowerShell 在已启用 Azure Arc 的服务器管理的混合服务器上管理 VM 扩展之前,需要安装此模块。

    可以从工作站执行这些管理操作。 无需在已启用 Azure Arc 的服务器上运行它们。

    在已启用 Azure Arc 的服务器上运行以下命令:

Install-Module -Name Az.ConnectedMachine

添加扩展

若要在已启用 Azure Arc 的服务器上启用 VM 扩展,请将 New-AzConnectedMachineExtension-Name-ResourceGroupName-MachineName-Location-PublisherExtensionType-Settings 参数配合使用。

以下示例将在已启用 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  westus2   CustomScriptExtension Succeeded

更新扩展配置

要重新配置已安装的扩展,你可以将 Update-AzConnectedMachineExtension cmdlet 与 -Name-MachineName-ResourceGroupName-Settings 参数配合使用。

若要了解提供所需扩展更改的方法,请参阅 cmdlet 的参考文章。

升级扩展

受支持 VM 扩展的新版本发布后,可将该扩展升级到这一最新版本。 若要升级 VM 扩展,请将 Update-AzConnectedExtension-MachineName-ResourceGroupName-ExtensionTarget 参数配合使用。

对于 -ExtensionTarget 参数,需要指定扩展以及可用的最新版本。 若要确定某个扩展的最新可用版本,请在 Azure 门户中访问选定的启用了 Azure Arc 的服务器的“扩展”页,或者运行 Get-AzVMExtensionImage。 可以通过提供以下两项,在单个升级请求中指定多个扩展:

  • 以逗号分隔的扩展列表,通过其发布者和类型来定义(用句点分隔)
  • 每个扩展的目标版本

可以通过运行命令 Get-AzConnectedMachineExtension,随时查看已安装的 VM 扩展的版本。 TypeHandlerVersion 属性值表示扩展的版本。

删除扩展

若要删除已启用 Azure Arc 的服务器上安装的 VM 扩展,请将 Remove-AzConnectedMachineExtension-Name-MachineName-ResourceGroupName 参数配合使用。