Azure 虚拟机扩展是小型应用程序,可在Azure 虚拟机上提供部署后配置和自动化任务。 例如,如果虚拟机要求安装软件、防病毒保护或进行 Docker 配置,便可以使用 VM 扩展来完成这些任务。 可以使用 Azure CLI、PowerShell、Azure Resource Manager 模板和 Azure 门户运行 Azure VM 扩展。 扩展可与新虚拟机部署捆绑在一起,或者针对任何现有系统运行。

本文档提供虚拟机扩展的概述、使用虚拟机扩展的先决条件,以及有关如何检测、管理和删除虚拟机扩展的指南。 由于有许多 VM 扩展可用,每个扩展可能具有唯一的配置,因此本文档提供通用信息。 扩展特定的详细信息可在每个特定于单个扩展的文档中找到。

用例和示例

有许多不同的 Azure VM 扩展可用,每个都有特定用例。 一些示例用例包括:

除了进程特定的扩展外,自定义脚本扩展也可用于 Windows 和 Linux 虚拟机。 适用于 Windows 的自定义脚本扩展允许在虚拟机上运行任何 PowerShell 脚本。 在设计需要本机 Azure 工具无法提供的配置的 Azure 部署时,这很有用。 有关详细信息,请参阅 Windows VM 自定义脚本扩展

先决条件

每个虚拟机扩展可能都有其自己的一组先决条件。 例如,Docker VM 扩展有支持的 Linux 分发的先决条件。 特定于扩展的文档中详细介绍了单个扩展的要求。

Azure VM 代理

Azure VM 代理可管理 Azure 虚拟机与 Azure 结构控制器之间的交互。 VM 代理负责部署和管理 Azure 虚拟机的许多功能层面,包括运行 VM 扩展。 Azure VM 代理预先安装在 Azure 应用商店映像上,并可安装在支持的操作系统上。

有关受支持的操作系统以及安装说明的信息,请参阅 Azure 虚拟机代理

发现 VM 扩展

有许多不同的 VM 扩展可与 Azure 虚拟机配合使用。 若要查看完整列表,请使用 Azure Resource Manager PowerShell 模块运行以下命令。 运行此命令时请确保指定所需的位置。

PowerShell复制
Get-AzureRmVmImagePublisher -Location ChinaNorth | `
Get-AzureRmVMExtensionImageType | `
Get-AzureRmVMExtensionImage | Select Type, Version

运行 VM 扩展

Azure 虚拟机扩展可以在现有虚拟机上运行,当需要在已部署的 VM 上进行配置更改或恢复连接时,这很有用。 VM 扩展还可以与 Azure Resource Manager 模板部署捆绑。 在 Resource Manager 模板中使用扩展,可以在不进行部署后干预的情况下部署和配置 Azure 虚拟机。

可使用以下方法针对现有虚拟机运行扩展。

PowerShell

存在多个用于运行单个扩展的 PowerShell 命令。 若要查看列表,请运行以下 PowerShell 命令。

PowerShell复制
get-command Set-AzureRM*Extension* -Module AzureRM.Compute

此命令的输出如下所示:

PowerShell复制
CommandType     Name                                               Version    Source
----------- ---- ------- ------
Cmdlet Set-AzureRmVMAccessExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMADDomainExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMAEMExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMBackupExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMBginfoExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMChefExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMCustomScriptExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMDiagnosticsExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMDiskEncryptionExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMDscExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMExtension 2.2.0 AzureRM.Compute
Cmdlet Set-AzureRmVMSqlServerExtension 2.2.0 AzureRM.Compute

以下示例使用自定义脚本扩展从 GitHub 存储库将脚本下载到目标虚拟机上,并运行该脚本。 有关自定义脚本扩展的详细信息,请参阅自定义脚本扩展概述

PowerShell复制
Set-AzureRmVMCustomScriptExtension -ResourceGroupName "myResourceGroup" `
-VMName "myVM" -Name "myCustomScript" `
-FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
-Run "Create-File.ps1" -Location "China North"

在此示例中,VM 访问扩展用于重置 Windows 虚拟机的管理密码。 有关 VM 访问扩展的详细信息,请参阅重置 Windows VM 中的远程桌面服务

PowerShell复制
$cred=Get-Credential

Set-AzureRmVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
-Location ChinaNorth -UserName $cred.GetNetworkCredential().Username `
-Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

Set-AzureRmVMExtension 命令可用于启动任何 VM 扩展。 有关详细信息,请参阅 Set-AzureRmVMExtension 参考

Azure 门户

可通过 Azure 门户将 VM 扩展应用到现有虚拟机。 为此,请选择要使用的虚拟机,选择“扩展”,然后单击“添加”。 这会提供可用扩展的列表。 选择所需的扩展,并按照向导中的步骤进行操作。

下图显示了从 Azure 门户安装 Microsoft 反恶意软件扩展。

Azure Resource Manager 模板

VM 扩展可添加到 Azure Resource Manager 模板,并在部署模板的过程中执行。 使用模板部署扩展对于创建完全配置的 Azure 部署很有用。 例如,以下 JSON 取自一个 Resource Manager 模板,该模板将在每个 VM 上部署一组负载均衡虚拟机和一个 Azure SQL 数据库,并安装一个 .NET Core 应用程序。 VM 扩展负责安装软件。

有关详细信息,请参阅完整的 Resource Manager 模板

JSON复制
{
"apiVersion": "2015-06-15",
"type": "extensions",
"name": "config-app",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
"[variables('musicstoresqlName')]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.4",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
]
},
"protectedSettings": {
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.chinacloudapi.cn')]"
}
}
}

有关详细信息,请参阅使用 Windows VM 扩展创作 Azure Resource Manager 模板

保护 VM 扩展数据

运行 VM 扩展时,可能需要提供敏感信息,例如凭据、存储帐户名称和存储帐户访问密钥。 许多 VM 扩展包括用于对数据进行加密,并且仅在目标虚拟机内对数据进行解密的受保护配置。 每个扩展都有特定的受保护配置架构,在特定于扩展的文档中会详细介绍此架构。

以下示例显示适用于 Windows 的自定义脚本扩展的实例。 请注意,要执行的命令包含一组凭据。 在此示例中,不会加密要执行的命令。

JSON复制
{
"apiVersion": "2015-06-15",
"type": "extensions",
"name": "config-app",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
"[variables('musicstoresqlName')]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.4",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
],
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.chinacloudapi.cn')]"
}
}
}

将要执行的命令属性移动到受保护的配置,以保护执行字符串。

JSON复制
{
"apiVersion": "2015-06-15",
"type": "extensions",
"name": "config-app",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
"[variables('musicstoresqlName')]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.4",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
]
},
"protectedSettings": {
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.chinacloudapi.cn')]"
}
}
}

排查 VM 扩展的问题

每个 VM 扩展都有特定的故障排除步骤。 例如,使用自定义脚本扩展时,可在运行该扩展的本地虚拟机上找到脚本执行详细信息。 任何特定于扩展的故障排除步骤均在特定于扩展的文档中详细说明。

以下故障排除步骤适用于所有虚拟机扩展。

查看扩展状态

针对虚拟机运行虚拟机扩展后,使用以下 PowerShell 命令返回扩展状态。 请将示例参数名称替换成自己的值。 Name 参数采用执行时提供给扩展的名称。

PowerShell复制
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

输出如下所示:

JSON复制
ResourceGroupName       : myResourceGroup
VMName : myVM
Name : myExtensionName
Location : chinanorth
Etag : null
Publisher : Microsoft.Azure.Extensions
ExtensionType : DockerExtension
TypeHandlerVersion : 1.0
Id : /subscriptions/mySubscriptionIS/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/myExtensionName
PublicSettings :
ProtectedSettings :
ProvisioningState : Succeeded
Statuses :
SubStatuses :
AutoUpgradeMinorVersion : False
ForceUpdateTag :

此外,还可以在 Azure 门户中找到扩展执行状态。 如果要查看扩展的状态,请选择虚拟机,选择“扩展” ,并选择所需的扩展。

重新运行 VM 扩展

在某些情况下,可能需要重新运行虚拟机扩展。 可以通过删除扩展,并使用所选执行方法重新运行扩展来执行此操作。 若要删除扩展,请使用 Azure PowerShell 模块运行以下命令。 请将示例参数名称替换成自己的值。

PowerShell复制
Remove-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

此外,还可以使用 Azure 门户删除扩展。 为此,请执行以下操作:

  1. 选择虚拟机。
  2. 选择“扩展” 。
  3. 选择所需的扩展。
  4. 选择“卸载” 。

常见 VM 扩展参考

扩展名称 说明 详细信息
适用于 Windows 的自定义脚本扩展 针对 Azure 虚拟机运行脚本 适用于 Windows 的自定义脚本扩展
适用于 Windows 的 DSC 扩展 PowerShell DSC (Desired State Configuration) 扩展 适用于 Windows 的 DSC 扩展
Azure 诊断扩展 管理 Azure 诊断 Azure 诊断扩展
Azure VM 访问扩展 管理用户和凭据 适用于 Linux 的 VM 访问扩展

立即访问http://market.azure.cn

适用于 Windows 的虚拟机扩展和功能的更多相关文章

  1. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  2. 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能

    编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...

  3. Windows Server 2016-Hyper-V 2016新增功能

    本文解释了Windows Server 2016和Microsoft Hyper-V Server 2016上Hyper-V的新增功能和变更功能. 与Connected Standby兼容(新) 在使 ...

  4. 微软开放技术开发了适用于 Windows Azure 移动服务的开源 Android SDK

     发布于 2014-02-10 作者 陈 忠岳 为进一步实现连接微软与非微软技术的目标,微软开放技术有限公司开发了适用于 Windows Azure 移动服务的 Android SDK,由Scot ...

  5. 在 Windows Azure 虚拟机中如何备份和还原 Windows 系统磁盘

    备份和还原对于操作真实的系统来说至关重要.对于 Windows Azure 虚拟机环境中的 Windows Server,可以根据自身的需求选择多种不同的工具或将这些工具结合使用来实现备份.下面将对这 ...

  6. Windows Server 2016-存储新增功能

    本章给大家介绍有关Windows Server 2016 中存储方面的新增功能,具体内容如下: 1.Storage Spaces Direct: 存储空间直通允许通过使用具有本地存储的服务器构建高可用 ...

  7. kvm虚拟机扩展磁盘空间

    kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致.原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用. raw磁盘格式扩展思路如下 (1) 新添加一块raw格式的磁盘加入到 ...

  8. windows的各种扩展名详解

    Windows系统文件按照不同的格式和用途分很多种类,为便于管理和识别,在对文件命名时,是以扩展名加以区分的,即文件名格式为: 主文件名.扩展名.这样就可以根据文件的扩展名,判定文件的种类,从而知道其 ...

  9. virtualbox 下windows与虚拟机实现文件共享---挂载

    1.创建挂载目录: mkdir /mnt/share 2.挂载:mount /dev/cdrom /mnt/share 3.cd /mnt/share 3.虚拟机-设备-分配光驱-VBoxGuestA ...

随机推荐

  1. Jexus进程守护工具jws.guard

    一个运行中的进程,难免会因为各种各样的原因无缘无故的宕掉(比如网站瞬间的负载过高.内存不足等),而Jexus宕掉的后果往往只有一个:对外提供服务的网站无法访问了.因此,我们需要最大限度的保障我们的网站 ...

  2. python-TCP传输模型

    #!/usr/bin/python #coding=utf-8 #服务器端 from socket import * from time import ctime HOST="192.168 ...

  3. python-Condition 进程同步互斥

    #!/usr/bin/python import multiprocessing,time def A(cond): name=multiprocessing.current_process().na ...

  4. SQL语句实现不存在即插入,存在则increase某字段的功能insert into … on duplicate key update

    前提条件:必须是唯一主键: CREATE UNIQUE INDEX idx_vote_object ON test_customers_vote (`vote_object`, `vote_objec ...

  5. 穆里尼奥:曼联没有在今夏尝试过签下C罗

    在曼联结束的本个夏季首场友谊赛中,球队5-2战胜了洛杉矶银河,在赛后穆里尼奥出席了赛后的新闻发布会,并且回答了记者的提问.其中他表示曼联在今年夏季从来没有尝试回签C罗,因为这是“不可能完成的任务”. ...

  6. imx6 Android6.0.1 init.rc解析

    1. 概述 1.1 概述 之前分析过android5的init.rc,不过还是不够仔细,现在来看看android6的,多的就不写了,只写关键点 忘记一些基本概念可以先看看之前的笔记: Android5 ...

  7. JS Date函数在safari中的问题

    问题描述:在做Web的时候,在PC上用Chrome调试成功,但是在safari一测就出现了问题.经过debug发现是日期相关出现问题.查阅一些资料后发现,safari中对于JavaScript的Dat ...

  8. SQL Serever学习9——基础查询语句

    SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...

  9. wpf 子窗体调用主窗体中函数的实现

    子窗体(Win_Set): MainWindow m;                m = (MainWindow)this.Owner;                m.showText(&qu ...

  10. jquery appendTo用法

    $("#top_cartWarp").appendTo($("#top_main_right")).css('position','relative').css ...