Microsoft Azure VM Agent和扩展介绍与使用
VM Agent,是一个安装在Azure VM中的代理程序,Microsoft Azure 虚拟机代理(AM 代理)是受保护的轻型进程,用于管理 VM 与 Azure 结构控制器的交互。VM 代理有一个主要角色,目的是启用和执行 Azure 虚拟机扩展。VM扩展可用于对虚拟机进行部署后配置,例如安装和配置软件。 虚拟机扩展还可启用恢复功能,例如重置虚拟机的管理密码。没有Azure VM代理,虚拟机扩展将无法运行。
查看可用的扩展程序
Azure VM 代理默认安装在任何通过 Azure 库映像部署的 Windows 虚拟机上。 从门户、PowerShell、命令行接口或 Azure 资源管理器模板部署 Azure 库映像时,也会安装 Azure VM 代理。
如果没有安装也没关系,需要的话,可以手动下载安装,例如现在没有
访问如下链接下载VM Agent的msi安装程序:
http://go.microsoft.com/fwlink/?LinkID=394789&clcid=0x409
若要以自动或无人参与方式安装 VM 代理,请运行以下命令
msiexec.exe /i WindowsAzureVmAgent.2.7.1198.802.rd_art_stable.170327-1033.fre /quiet
安装完成之后,使用下面命令检测VM代理运行状态
Add-AzureRmAccount -EnvironmentName AzureChinaCloud
$vms = Get-AzureRmVM
foreach ($vm in $vms) {
$agent = $vm | Select -ExpandProperty OSProfile | Select -ExpandProperty Windowsconfiguration | Select ProvisionVMAgent
Write-Host $vm.Name $agent.ProvisionVMAgent
}
如果希望手动查看VM Agent状态,可以登陆Azure VM查看
为了避免重启后 VM Agent 不会自动启动,在服务管理中查看该服务是否设置为自动启动。
在Azure门户中查看
虚拟机中的 Extensions 边栏里列出了该虚拟机安装的所有扩展。诊断扩展在 Linux 系统中为 LinuxDiagnostic; 在Windows 系统中为IaaSDiagnostic。
若状态为Provisioning succeeded,则说明扩展安全成功。若是其他状态如Not Available或者Failed,则说明安装可能有问题。这时就需要排查安装问题。
VMAccess:如果您之前丢失过您的 IaaS VM 密码,密码将无法恢复。同样,如果 VM 上的 RDP 配置文件损坏,要修复该设置也并不容易。VMAccess 可以解决这两种场景下的问题。对于密码,VMAccess 提供了一种机制,可以让用户通过重置密码和用户名再次登录 VM。当可以使用重置的密码登录后,建议您更改密码。
使用Azure 门户进行重置
使用如下PowerShell脚本进行重置
$cred=Get-Credential
Set-AzureRmVMAccessExtension -ResourceGroupName “VMAgentGroup” -VMName “VMAgent” -Name “myVMAccess” -Location ChinaNorth -UserName $cred.GetNetworkCredential().Username -Password $cred.GetNetworkCredential().Password -typeHandlerVersion “2.0”
重置服务器远程桌面服务配置
Set-AzureRmVMAccessExtension -ResourceGroupName “VMAgentGroup” -VMName “VMAgent” -Name “myVMAccess” -Location ChinaNorth -typeHandlerVersion “2.0” -ForceRerun
需要注意的是,无论何时,一个VM只能有一个VM 访问代理。若要成功设置 VM 访问代理属性,可以使用-ForceRerun 选项。使用-ForceRerun时,请确保使用与前述命令使用的 VM 访问代理相同的名称。
以上都是Microsoft为Azure平台内置好了的相关VMAgent,如果需要使用第三方,或者自定义扩展程序时,该如何操作呢?
-
Windows平台中,,现阶段可以针对 Windows 10 客户端、Windows Server 2008 R2、2012、2012 R2和2016运行适用于 Windows 的自定义脚本扩展
-
脚本需要存储在 Azure Blob 存储中或可通过有效 URL 访问的任何其他位置
-
适用于 Windows 的自定义脚本扩展要求目标虚拟机已连接到 Internet
Set-AzureRmVMCustomScriptExtension -ResourceGroupName myResourceGroup `
-VMName myVM `
-Location myLocation `
-FileUri myURL `
-Run ‘myScript.ps1’ `
-Name DemoScriptExtension
如果您的虚拟机部署模式为ARM,并且添加了大量了VM扩展程序,那么您可以直接导出,以便可以后期直接使用
Azure Resource Manager 自动化脚本生成一个 Resource Manager模板、一个参数文件以及多个示例部署脚本(例如 PowerShell 和 Azure CLI)。目前可以使用下载按钮下载导出的模板、将其作为新模板添加到模板库,或使用部署按钮重新对其进行部署。