Azure 虛擬機(jī)擴(kuò)展是小型應(yīng)用程序,可在Azure 虛擬機(jī)上提供部署后配置和自動(dòng)化任務(wù)慷妙。 例如眷昆,如果虛擬機(jī)要求安裝軟件、防病毒保護(hù)或進(jìn)行 Docker 配置弟孟,便可以使用 VM 擴(kuò)展來完成這些任務(wù)贝咙。 可以使用 Azure CLI、PowerShell拂募、Azure Resource Manager 模板和 Azure 門戶運(yùn)行 Azure VM 擴(kuò)展庭猩。 擴(kuò)展可與新虛擬機(jī)部署捆綁在一起窟她,或者針對(duì)任何現(xiàn)有系統(tǒng)運(yùn)行。
本文檔提供虛擬機(jī)擴(kuò)展的概述蔼水、使用虛擬機(jī)擴(kuò)展的先決條件震糖,以及有關(guān)如何檢測(cè)、管理和刪除虛擬機(jī)擴(kuò)展的指南趴腋。 由于有許多 VM 擴(kuò)展可用吊说,每個(gè)擴(kuò)展可能具有唯一的配置,因此本文檔提供通用信息优炬。 擴(kuò)展特定的詳細(xì)信息可在每個(gè)特定于單個(gè)擴(kuò)展的文檔中找到颁井。
用例和示例
有許多不同的 Azure VM 擴(kuò)展可用,每個(gè)都有特定用例蠢护。 一些示例用例包括:
使用適用于 Windows 的 DSC 擴(kuò)展將 PowerShell 所需狀態(tài)配置應(yīng)用于虛擬機(jī)雅宾。 有關(guān)詳細(xì)信息,請(qǐng)參閱Azure Desired State configuration extension(Azure Desired State Configuration 擴(kuò)展)葵硕。
使用 Datadog 擴(kuò)展配置 Azure 基礎(chǔ)結(jié)構(gòu)監(jiān)視功能秀又。 有關(guān)詳細(xì)信息,請(qǐng)參閱Datadog 博客贬芥。
使用 Chef 配置 Azure 虛擬機(jī)吐辙。 有關(guān)詳細(xì)信息,請(qǐng)參閱使用 Chef 自動(dòng)執(zhí)行 Azure 虛擬機(jī)部署蘸劈。
除了進(jìn)程特定的擴(kuò)展外昏苏,自定義腳本擴(kuò)展也可用于 Windows 和 Linux 虛擬機(jī)。 適用于 Windows 的自定義腳本擴(kuò)展允許在虛擬機(jī)上運(yùn)行任何 PowerShell 腳本威沫。 在設(shè)計(jì)需要本機(jī) Azure 工具無法提供的配置的 Azure 部署時(shí)贤惯,這很有用。 有關(guān)詳細(xì)信息棒掠,請(qǐng)參閱Windows VM 自定義腳本擴(kuò)展孵构。
先決條件
每個(gè)虛擬機(jī)擴(kuò)展可能都有其自己的一組先決條件。 例如烟很,Docker VM 擴(kuò)展有支持的 Linux 分發(fā)的先決條件颈墅。 特定于擴(kuò)展的文檔中詳細(xì)介紹了單個(gè)擴(kuò)展的要求。
Azure VM 代理
Azure VM 代理可管理 Azure 虛擬機(jī)與 Azure 結(jié)構(gòu)控制器之間的交互雾袱。 VM 代理負(fù)責(zé)部署和管理 Azure 虛擬機(jī)的許多功能層面恤筛,包括運(yùn)行 VM 擴(kuò)展。 Azure VM 代理預(yù)先安裝在 Azure 應(yīng)用商店映像上芹橡,并可安裝在支持的操作系統(tǒng)上毒坛。
有關(guān)受支持的操作系統(tǒng)以及安裝說明的信息,請(qǐng)參閱Azure 虛擬機(jī)代理。
發(fā)現(xiàn) VM 擴(kuò)展
有許多不同的 VM 擴(kuò)展可與 Azure 虛擬機(jī)配合使用煎殷。 若要查看完整列表屯伞,請(qǐng)使用 Azure Resource Manager PowerShell 模塊運(yùn)行以下命令。 運(yùn)行此命令時(shí)請(qǐng)確保指定所需的位置豪直。
PowerShell復(fù)制
Get-AzureRmVmImagePublisher-LocationChinaNorth | `Get-AzureRmVMExtensionImageType| `Get-AzureRmVMExtensionImage| Select Type, Version
運(yùn)行 VM 擴(kuò)展
Azure 虛擬機(jī)擴(kuò)展可以在現(xiàn)有虛擬機(jī)上運(yùn)行劣摇,當(dāng)需要在已部署的 VM 上進(jìn)行配置更改或恢復(fù)連接時(shí),這很有用顶伞。 VM 擴(kuò)展還可以與 Azure Resource Manager 模板部署捆綁饵撑。 在 Resource Manager 模板中使用擴(kuò)展剑梳,可以在不進(jìn)行部署后干預(yù)的情況下部署和配置 Azure 虛擬機(jī)唆貌。
可使用以下方法針對(duì)現(xiàn)有虛擬機(jī)運(yùn)行擴(kuò)展。
PowerShell
存在多個(gè)用于運(yùn)行單個(gè)擴(kuò)展的 PowerShell 命令垢乙。 若要查看列表锨咙,請(qǐng)運(yùn)行以下 PowerShell 命令。
PowerShell復(fù)制
get-commandSet-AzureRM*Extension*-ModuleAzureRM.Compute
此命令的輸出如下所示:
PowerShell復(fù)制
CommandType? ? Name? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Version? ? Source----------------------------CmdletSet-AzureRmVMAccessExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMADDomainExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMAEMExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMBackupExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMBginfoExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMChefExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMCustomScriptExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMDiagnosticsExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMDiskEncryptionExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMDscExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMExtension2.2.0AzureRM.ComputeCmdletSet-AzureRmVMSqlServerExtension2.2.0AzureRM.Compute
以下示例使用自定義腳本擴(kuò)展從 GitHub 存儲(chǔ)庫將腳本下載到目標(biāo)虛擬機(jī)上追逮,并運(yùn)行該腳本酪刀。 有關(guān)自定義腳本擴(kuò)展的詳細(xì)信息,請(qǐng)參閱自定義腳本擴(kuò)展概述钮孵。
PowerShell復(fù)制
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 訪問擴(kuò)展用于重置 Windows 虛擬機(jī)的管理密碼。 有關(guān) VM 訪問擴(kuò)展的詳細(xì)信息巴席,請(qǐng)參閱重置 Windows VM 中的遠(yuǎn)程桌面服務(wù)历涝。
PowerShell復(fù)制
$cred=Get-CredentialSet-AzureRmVMAccessExtension-ResourceGroupName"myResourceGroup"-VMName"myVM"-Name"myVMAccess"`-LocationChinaNorth-UserName$cred.GetNetworkCredential().Username `-Password$cred.GetNetworkCredential().Password-typeHandlerVersion"2.0"
Set-AzureRmVMExtension命令可用于啟動(dòng)任何 VM 擴(kuò)展。 有關(guān)詳細(xì)信息漾唉,請(qǐng)參閱Set-AzureRmVMExtension 參考荧库。
Azure 門戶
可通過 Azure 門戶將 VM 擴(kuò)展應(yīng)用到現(xiàn)有虛擬機(jī)。 為此赵刑,請(qǐng)選擇要使用的虛擬機(jī)分衫,選擇“擴(kuò)展”,然后單擊“添加”般此。 這會(huì)提供可用擴(kuò)展的列表蚪战。 選擇所需的擴(kuò)展,并按照向?qū)е械牟襟E進(jìn)行操作铐懊。
下圖顯示了從 Azure 門戶安裝 Microsoft 反惡意軟件擴(kuò)展屎勘。
Azure Resource Manager 模板
VM 擴(kuò)展可添加到 Azure Resource Manager 模板,并在部署模板的過程中執(zhí)行居扒。 使用模板部署擴(kuò)展對(duì)于創(chuàng)建完全配置的 Azure 部署很有用概漱。 例如,以下 JSON 取自一個(gè) Resource Manager 模板喜喂,該模板將在每個(gè) VM 上部署一組負(fù)載均衡虛擬機(jī)和一個(gè) Azure SQL 數(shù)據(jù)庫瓤摧,并安裝一個(gè) .NET Core 應(yīng)用程序竿裂。 VM 擴(kuò)展負(fù)責(zé)安裝軟件。
有關(guān)詳細(xì)信息照弥,請(qǐng)參閱完整的Resource Manager 模板腻异。
JSON復(fù)制
{"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')]"}? ? }}
有關(guān)詳細(xì)信息,請(qǐng)參閱使用 Windows VM 擴(kuò)展創(chuàng)作 Azure Resource Manager 模板这揣。
保護(hù) VM 擴(kuò)展數(shù)據(jù)
運(yùn)行 VM 擴(kuò)展時(shí)悔常,可能需要提供敏感信息,例如憑據(jù)给赞、存儲(chǔ)帳戶名稱和存儲(chǔ)帳戶訪問密鑰机打。 許多 VM 擴(kuò)展包括用于對(duì)數(shù)據(jù)進(jìn)行加密,并且僅在目標(biāo)虛擬機(jī)內(nèi)對(duì)數(shù)據(jù)進(jìn)行解密的受保護(hù)配置片迅。 每個(gè)擴(kuò)展都有特定的受保護(hù)配置架構(gòu)残邀,在特定于擴(kuò)展的文檔中會(huì)詳細(xì)介紹此架構(gòu)。
以下示例顯示適用于 Windows 的自定義腳本擴(kuò)展的實(shí)例柑蛇。 請(qǐng)注意芥挣,要執(zhí)行的命令包含一組憑據(jù)。 在此示例中耻台,不會(huì)加密要執(zhí)行的命令空免。
JSON復(fù)制
{"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')]"}? ? }}
將要執(zhí)行的命令屬性移動(dòng)到受保護(hù)的配置,以保護(hù)執(zhí)行字符串盆耽。
JSON復(fù)制
{"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 擴(kuò)展的問題
每個(gè) VM 擴(kuò)展都有特定的故障排除步驟蹋砚。 例如,使用自定義腳本擴(kuò)展時(shí)征字,可在運(yùn)行該擴(kuò)展的本地虛擬機(jī)上找到腳本執(zhí)行詳細(xì)信息都弹。 任何特定于擴(kuò)展的故障排除步驟均在特定于擴(kuò)展的文檔中詳細(xì)說明。
以下故障排除步驟適用于所有虛擬機(jī)擴(kuò)展匙姜。
查看擴(kuò)展?fàn)顟B(tài)
針對(duì)虛擬機(jī)運(yùn)行虛擬機(jī)擴(kuò)展后畅厢,使用以下 PowerShell 命令返回?cái)U(kuò)展?fàn)顟B(tài)。 請(qǐng)將示例參數(shù)名稱替換成自己的值氮昧。Name參數(shù)采用執(zhí)行時(shí)提供給擴(kuò)展的名稱框杜。
PowerShell復(fù)制
Get-AzureRmVMExtension-ResourceGroupNamemyResourceGroup-VMNamemyVM-NamemyExtensionName
輸出如下所示:
JSON復(fù)制
ResourceGroupName? ? ? : myResourceGroupVMName? ? ? ? ? ? ? ? ? : myVMName? ? ? ? ? ? ? ? ? ? : myExtensionNameLocation? ? ? ? ? ? ? ? : chinanorthEtag? ? ? ? ? ? ? ? ? ? :nullPublisher? ? ? ? ? ? ? : Microsoft.Azure.ExtensionsExtensionType? ? ? ? ? : DockerExtensionTypeHandlerVersion? ? ? :1.0Id? ? ? ? ? ? ? ? ? ? ? : /subscriptions/mySubscriptionIS/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/myExtensionNamePublicSettings? ? ? ? ? :ProtectedSettings? ? ? :ProvisioningState? ? ? : SucceededStatuses? ? ? ? ? ? ? ? :SubStatuses? ? ? ? ? ? :AutoUpgradeMinorVersion : FalseForceUpdateTag? ? ? ? ? :
此外,還可以在 Azure 門戶中找到擴(kuò)展執(zhí)行狀態(tài)袖肥。 如果要查看擴(kuò)展的狀態(tài)咪辱,請(qǐng)選擇虛擬機(jī),選擇“擴(kuò)展” 椎组,并選擇所需的擴(kuò)展油狂。
重新運(yùn)行 VM 擴(kuò)展
在某些情況下,可能需要重新運(yùn)行虛擬機(jī)擴(kuò)展。 可以通過刪除擴(kuò)展专筷,并使用所選執(zhí)行方法重新運(yùn)行擴(kuò)展來執(zhí)行此操作弱贼。 若要?jiǎng)h除擴(kuò)展,請(qǐng)使用 Azure PowerShell 模塊運(yùn)行以下命令磷蛹。 請(qǐng)將示例參數(shù)名稱替換成自己的值吮旅。
PowerShell復(fù)制
Remove-AzureRmVMExtension-ResourceGroupNamemyResourceGroup-VMNamemyVM-NamemyExtensionName
此外,還可以使用 Azure 門戶刪除擴(kuò)展味咳。 為此庇勃,請(qǐng)執(zhí)行以下操作:
選擇虛擬機(jī)。
選擇“擴(kuò)展” 槽驶。
選擇所需的擴(kuò)展责嚷。
選擇“卸載” 。
常見 VM 擴(kuò)展參考
擴(kuò)展名稱說明詳細(xì)信息
適用于 Windows 的自定義腳本擴(kuò)展針對(duì) Azure 虛擬機(jī)運(yùn)行腳本適用于 Windows 的自定義腳本擴(kuò)展
適用于 Windows 的 DSC 擴(kuò)展PowerShell DSC (Desired State Configuration) 擴(kuò)展適用于 Windows 的 DSC 擴(kuò)展
Azure 診斷擴(kuò)展管理 Azure 診斷Azure 診斷擴(kuò)展
Azure VM 訪問擴(kuò)展管理用戶和憑據(jù)適用于 Linux 的 VM 訪問擴(kuò)展
立即訪問http://market.azure.cn