Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширения виртуальной машины Azure — это небольшие приложения, которые предоставляют задачи конфигурации и автоматизации после развертывания на виртуальных машинах Azure. Например, если для виртуальной машины требуется установка программного обеспечения, антивирусная защита или возможность запуска скрипта на виртуальной машине, можно использовать расширение виртуальной машины.
Расширения виртуальных машин Azure можно запускать с помощью шаблонов Azure CLI, PowerShell, Azure Resource Manager (ARM) и портала Azure. Расширения можно упаковать с помощью нового развертывания виртуальной машины или запустить их в любой существующей системе.
В этой статье представлен обзор расширений виртуальных машин Azure, включая предварительные требования и рекомендации по обнаружению, управлению и удалению расширений. В этой статье содержатся общие сведения, так как доступно множество расширений виртуальных машин. Каждое расширение имеет потенциально уникальную конфигурацию и собственную документацию.
Замечание
Новое! Попробуйте использовать поддержку виртуальной машины для ускорения диагностикиРекомендуется запустить VM Assist для Windows или VM Assist для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.
Варианты использования и примеры
У каждого расширения виртуальной машины Azure есть конкретный вариант использования. Ниже приведены некоторые примеры.
Настройте мониторинг виртуальной машины с помощью агента Azure Monitor и аналитики виртуальных машин.
Настройте виртуальную машину Azure с помощью Chef.
Настройте мониторинг инфраструктуры Azure с помощью расширения Datadog.
Помимо расширений, относящихся к процессу, расширение пользовательского скрипта доступно как для виртуальных машин Windows, так и для Linux. Расширение пользовательских скриптов для Windows позволяет запускать любой скрипт PowerShell на виртуальной машине. Пользовательские скрипты полезны для разработки развертываний Azure, требующих настройки за пределами того, что может предоставить собственные средства Azure.
Предпосылки
Ознакомьтесь со следующими предварительными условиями для работы с расширениями виртуальных машин Azure.
Агент виртуальной машины Azure
Для обработки расширений на виртуальной машине необходимо установить агент виртуальной машины Azure для Windows . Этот агент также называется агентом виртуальной машины Azure или гостевым агентом Windows. При подготовке к установке расширений следует помнить, что некоторые расширения имеют отдельные предварительные требования, такие как доступ к ресурсам или зависимостям.
Агент виртуальной машины Azure управляет взаимодействием между виртуальной машиной Azure и контроллером структуры Azure. Агент отвечает за множество функциональных аспектов развертывания виртуальных машин Azure и управления ими, включая запуск расширений виртуальных машин.
Агент виртуальной машины Azure предварительно установлен на образах Azure Marketplace. Агент также можно установить вручную в поддерживаемых операционных системах.
Агент выполняется в нескольких операционных системах. Однако платформа расширений имеет ограничение для операционных систем, которые используют расширения. Некоторые расширения не поддерживаются во всех операционных системах и могут выдавать код ошибки 51 ("Неподдерживаемая ОС"). Проверьте отдельную документацию по расширению для обеспечения поддержки.
Доступ к сети
Пакеты расширений скачиваются из репозитория расширений службы хранилища Azure. Отправки состояния расширения отправляются в службу хранилища Azure.
Если вы используете поддерживаемую версию агента виртуальной машины Azure, вам не нужно разрешать доступ к службе хранилища Azure в регионе виртуальной машины. Агент виртуальной машины можно использовать для перенаправления связи с контроллером структуры Azure для обмена данными агента (с помощью HostGAPlugin функции через привилегированный канал на частный IP-адрес 168.63.129.16). Если вы находитесь в неподдерживаемой версии агента виртуальной машины, необходимо разрешить исходящий доступ к службе хранилища Azure в этом регионе из виртуальной машины.
Это важно
Если вы блокируете доступ к IP-адресу 168.63.129.16 с помощью гостевого брандмауэра или через прокси-сервер, расширения завершаются ошибкой. Сбой возникает, даже если вы используете поддерживаемую версию агента виртуальной машины или настраиваете исходящий доступ. Требуются порты 80 и 32526.
Агенты можно использовать только для скачивания пакетов расширений и состояния отчета. Например, если установка расширения должна скачать скрипт из GitHub (расширение пользовательского скрипта) или требуется доступ к службе хранилища Azure (Azure Backup), необходимо открыть другие порты брандмауэра или группы безопасности сети (NSG). Разные расширения имеют разные требования, так как они имеют собственные права. Для расширений, требующих доступа к службе хранилища Azure или идентификатора Microsoft Entra, можно разрешить доступ с помощью тегов службы NSG Azure.
Агент виртуальной машины Azure не предоставляет поддержку прокси-сервера для включения перенаправления запросов на трафик агента. Агент виртуальной машины использует настраиваемый прокси-сервер (если у вас есть) для доступа к ресурсам в Интернете или на узле через IP-адрес 168.63.129.16.
Обнаружение расширений виртуальных машин
Многие расширения виртуальных машин доступны для использования с виртуальными машинами Azure. Чтобы просмотреть полный список, используйте Get-AzVMExtensionImage командлет PowerShell.
Следующая команда содержит список всех доступных расширений виртуальных машин в регионе "Западная часть США".
Get-AzVmImagePublisher -Location "West US" |
Get-AzVMExtensionImageType |
Get-AzVMExtensionImage | Select Type, Version
Эта команда предоставляет выходные данные, аналогичные следующему примеру:
Type Version
---- -------
AcronisBackup 1.0.33
AcronisBackup 1.0.51
AcronisBackupLinux 1.0.33
AlertLogicLM 1.3.0.1
AlertLogicLM 1.3.0.0
AlertLogicLM 1.4.0.1
Запуск расширений виртуальной машины
Расширения виртуальных машин Azure выполняются на существующих виртуальных машинах, что полезно, если необходимо внести изменения конфигурации или восстановить подключение к уже развернутой виртуальной машине. Расширения виртуальных машин также можно объединить с развертываниями шаблонов ARM. С помощью расширений с шаблонами ARM можно развертывать и настраивать виртуальные машины Azure без вмешательства после развертывания.
Для запуска расширения на существующей виртуальной машине можно использовать следующие методы.
Замечание
В некоторых из следующих примеров используются "<placeholder>" значения параметров в командах. Перед выполнением каждой команды обязательно замените все "<placeholder>" значения определенными значениями конфигурации.
PowerShell
Для выполнения отдельных расширений существуют несколько команд PowerShell. Чтобы просмотреть список, используйте команду Get-Command и фильтр по расширению:
Get-Command Set-Az*Extension* -Module Az.Compute
Эта команда предоставляет выходные данные, аналогичные следующему примеру:
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Set-AzVMAccessExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMADDomainExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMAEMExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMBackupExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMBginfoExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMChefExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMCustomScriptExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMDiagnosticsExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMDiskEncryptionExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMDscExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMExtension 4.5.0 Az.Compute
Cmdlet Set-AzVMSqlServerExtension 4.5.0 Az.Compute
Cmdlet Set-AzVmssDiskEncryptionExtension 4.5.0 Az.Compute
В следующем примере используется расширение пользовательского скрипта для скачивания скрипта из репозитория GitHub на целевую виртуальную машину, а затем запустите скрипт.
Set-AzVMCustomScriptExtension -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 "<myVMregion>"
В следующем примере используется расширение VMAccess для сброса административного пароля виртуальной машины Windows на временный пароль. После запуска этого кода необходимо сначала сбросить пароль при первом входе.
$cred=Get-Credential
Set-AzVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
-Location "myVMregion" -UserName $cred.GetNetworkCredential().Username `
-Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"
Для запуска любого расширения виртуальной машины можно использовать команду Set-AzVMExtension .
Портал Azure
Расширения виртуальных машин можно применить к существующей виртуальной машине с помощью портала Azure. Выберите виртуальную машину на портале, выберите "Расширения и приложения", а затем нажмите кнопку +Добавить. Выберите расширение, которое требуется в списке доступных расширений, и следуйте инструкциям мастера.
В следующем примере показана установка расширения Защиты от вредоносных программ Майкрософт на портале Azure:
Шаблоны диспетчера ресурсов Azure
Вы можете добавить расширения виртуальных машин в шаблон ARM и запустить их с развертыванием шаблона. При развертывании расширения с помощью шаблона можно создать полностью настроенные развертывания Azure.
В следующем примере JSON используется шаблон ARM , который развертывает набор виртуальных машин с балансировкой нагрузки и базу данных SQL Azure, а затем устанавливает приложение .NET Core на каждой виртуальной машине. Расширение виртуальной машины отвечает за установку программного обеспечения.
{
"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.9",
"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.windows.net')]"
}
}
}
Дополнительные сведения о создании шаблонов ARM см. в статье "Виртуальные машины" в шаблоне ARM.
Защита данных расширения виртуальной машины
При запуске расширения виртуальной машины может потребоваться включить конфиденциальную информацию, например учетные данные, имена учетных записей хранения и ключи доступа. Многие расширения виртуальных машин включают защищенную конфигурацию, которая шифрует данные и расшифровывает ее только на целевой виртуальной машине. Каждое расширение имеет определенную защищенную схему конфигурации, и каждая схема подробно описана в документации по расширению.
В следующем примере JSON показан экземпляр расширения пользовательского скрипта для Windows. Команда для выполнения включает набор учетных данных. В этом примере команда для выполнения не шифруется.
{
"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.9",
"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.windows.net')]"
}
}
}
Перемещение свойства commandToExecute в protected конфигурацию помогает защитить строку выполнения, как показано в следующем примере:
{
"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.9",
"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.windows.net')]"
}
}
}
На виртуальной машине инфраструктуры Azure как услуга (IaaS), использующая расширения, в консоли сертификатов могут отображаться сертификаты, имеющие субъект генератора сертификатов WINDOWS Azure CRP. На классической виртуальной машине переднего интерфейса RedDog (RDFE) эти сертификаты имеют имя субъекта Управления службами Windows Azure для расширений.
Эти сертификаты защищают обмен данными между виртуальной машиной и его узлом во время передачи защищенных параметров (паролей и других учетных данных), используемых расширениями. Контроллер структуры Azure создает сертификаты и передает их агенту виртуальной машины Azure. Если вы останавливаете и запускаете виртуальную машину каждый день, контроллер структуры может создать новый сертификат. Сертификат хранится в личном хранилище сертификатов компьютера. Эти сертификаты можно удалить. При необходимости агент виртуальной машины Azure повторно создает сертификаты.
Обновление агентов и расширений
Агенты и расширения используют один и тот же механизм автоматического обновления.
Если обновление доступно и включено автоматическое обновление, обновление устанавливается на виртуальной машине только после изменения расширения или другой модели виртуальной машины. Изменения могут включать:
- Диски данных
- Extensions
- Теги расширений
- Контейнер диагностики загрузки
- Секреты гостевой ОС
- Размер виртуальной машины
- сетевой профиль.
Издатели предоставляют обновления регионам в разное время. Вы можете использовать виртуальные машины в разных регионах в разных версиях.
Замечание
Для некоторых обновлений могут потребоваться дополнительные правила брандмауэра. Дополнительные сведения см. в разделе "Доступ к сети".
Перечисление расширений, развернутых на виртуальной машине
Для перечисления расширений, развернутых на виртуальной машине, можно использовать следующую команду:
$vm = Get-AzVM -ResourceGroupName "<myResourceGroup>" -VMName "<myVM>"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion
Выходные данные этой команды выглядят примерно так:
Publisher VirtualMachineExtensionType TypeHandlerVersion
--------- --------------------------- ------------------
Microsoft.Compute CustomScriptExtension 1.9
Обновления агента
Агент виртуальной машины Azure содержит только код обработки расширений. Код подготовки Windows отделен. Агент виртуальной машины Azure можно удалить. Вы не можете отключить автоматическое обновление агента виртуальной машины Azure.
Код обработки расширений отвечает за следующие задачи:
- Обмен данными с структурой Azure.
- Обработайте операции расширения виртуальной машины, такие как установки, состояние отчетов, обновление отдельных расширений и удаление расширений. Обновления содержат исправления безопасности, исправления ошибок и улучшения кода обработки расширений.
Чтобы проверить, какая версия запущена, см. статью "Обнаружение агента виртуальной машины Azure".
Обновления расширений
Если обновление расширения доступно и включено автоматическое обновление, если модель виртуальной машины изменяется, агент виртуальной машины Azure скачивает и обновляет расширение.
Автоматические обновления расширений являются дополнительными или исправлением. При подготовке расширения вы можете отказаться от дополнительных обновлений или отказаться от него. В следующем примере показано, как автоматически обновлять дополнительные версии в шаблоне ARM с помощью "autoUpgradeMinorVersion": true, параметра:
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.9",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
]
},
Чтобы получить последние исправления ошибок с дополнительными выпусками, настоятельно рекомендуется всегда выбирать автоматическое обновление в развертываниях расширений. Вы не можете отказаться от обновлений исправлений, которые несут исправления безопасности или ключевых ошибок.
Если отключить автоматическое обновление или обновить основную версию, используйте команду Set-AzVMExtension и укажите целевую версию.
Определение обновлений расширений
Существует несколько способов идентификации обновлений расширения.
Определение того, задано ли расширение с помощью autoUpgradeMinorVersion на виртуальной машине
Вы можете просмотреть модель виртуальной машины, чтобы определить, подготовлено ли расширение с autoUpgradeMinorVersion помощью параметра. Чтобы проверить модель виртуальной машины, используйте команду Get-AzVm и укажите имя группы ресурсов и виртуальной машины следующим образом:
$vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
$vm.Extensions
В следующем примере выходных данных показано, autoUpgradeMinorVersion что trueдля параметра задано значение :
ForceUpdateTag :
Publisher : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion : 1.9
AutoUpgradeMinorVersion : True
Определение возникновения события autoUpgradeMinorVersion
Чтобы узнать, когда произошло обновление расширения, можно просмотреть журналы агента на виртуальной машине на C:\WindowsAzure\Logs\WaAppAgent.log.
В следующем примере показана виртуальная машина с Microsoft.Compute.CustomScriptExtension установленной версией 1.8 и исправлением, доступным для версии 1.9.
[INFO] Getting plugin locations for plugin 'Microsoft.Compute.CustomScriptExtension'. Current Version: '1.8', Requested Version: '1.9'
[INFO] Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Compute.CustomScriptExtension' with requested version: '1.9', is: '1.9'
Разрешения агента
Для выполнения задач агент виртуальной машины Azure должен выполняться как локальная система.
Устранение неполадок расширений виртуальных машин
Каждое расширение виртуальной машины может иметь определенные действия по устранению неполадок. Например, при использовании расширения пользовательского скрипта можно найти сведения о выполнении скрипта локально на виртуальной машине, где выполняется расширение.
Следующие действия по устранению неполадок применяются ко всем расширениям виртуальных машин:
Чтобы проверить журнал агента виртуальной машины Azure, просмотрите действие при подготовке расширения в C:\WindowsAzure\Logs\WaAppAgent.log.
Дополнительные сведения см. в журналах расширений в C:\WindowsAzure\Logs\Plugins<extensionName>.
Ознакомьтесь с разделами по устранению неполадок в документации по расширению для кодов ошибок, известных проблем и других сведений о расширении.
Просмотрите системные журналы. Проверьте наличие других операций, которые могли повлиять на расширение, например длительную установку другого приложения, требующего монопольного доступа к диспетчеру пакетов.
В виртуальной машине, если существует существующее расширение с состоянием подготовки с ошибкой, любое другое новое расширение не удается установить.
Распространенные причины сбоев расширения
Ниже приведены некоторые распространенные причины, по которым расширение может завершиться ошибкой:
Для выполнения расширений требуется 20 минут. (Исключения — это настраиваемый скрипт, шеф-повар и DSC, которые имеют 90 минут.) Если развертывание превышает это время, оно помечается как время ожидания. Причиной этой проблемы могут быть виртуальные машины с низким уровнем ресурсов, а также другие конфигурации виртуальных машин или задачи запуска используют большие объемы ресурсов во время подготовки расширения.
Минимальные предварительные требования не выполнены. Некоторые расширения имеют зависимости от номеров SKU виртуальных машин, таких как образы HPC. Расширения могут иметь определенные требования к сетевому доступу, например обмен данными с службой хранилища Azure или общедоступными службами. Другие примеры могут быть доступом к репозиториям пакетов, из-за свободного места на диске или ограничений безопасности.
Доступ диспетчера пакетов является эксклюзивным. В некоторых случаях длительная конфигурация виртуальной машины и установка расширения могут конфликтовать, так как им требуется эксклюзивный доступ к диспетчеру пакетов.
Просмотр состояния расширения
После запуска расширения виртуальной машины с виртуальной машиной используйте команду Get-AzVM для возврата состояния расширения. В Substatuses[0] результате показано, что подготовка расширения выполнена успешно, что означает, что она успешно развернута на виртуальной машине. Если вы видите Substatuses[1] результат, выполнение расширения внутри виртуальной машины завершилось сбоем.
Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM" -Status
Результат аналогичен следующему примеру:
Extensions[0] :
Name : CustomScriptExtension
Type : Microsoft.Compute.CustomScriptExtension
TypeHandlerVersion : 1.9
Substatuses[0] :
Code : ComponentStatus/StdOut/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Message : Windows PowerShell \nCopyright (C) Microsoft Corporation. All rights reserved.\n
Substatuses[1] :
Code : ComponentStatus/StdErr/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Message : The argument 'cseTest%20Scriptparam1.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the
-File parameter.
Statuses[0] :
Code : ProvisioningState/failed/-196608
Level : Error
DisplayStatus : Provisioning failed
Message : Finished executing command
Вы также можете найти состояние выполнения расширения на портале Azure. Выберите виртуальную машину, выберите расширения и выберите нужное расширение.
Повторное запуск расширения виртуальной машины
В некоторых случаях может потребоваться повторно запустить расширение виртуальной машины. Вы можете повторно запустить расширение, удалив расширение, а затем повторно запустите его с помощью выбранного метода выполнения. Чтобы удалить расширение, используйте команду Remove-AzVMExtension следующим образом:
Remove-AzVMExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myExtensionName"
Вы также можете удалить расширение на портале Azure. Выберите виртуальную машину, выберите расширения и выберите нужное расширение. Выберите "Удалить".
Общие справочники по расширению виртуальной машины
В следующей таблице приведены некоторые распространенные ссылки на расширения виртуальной машины.
| Имя расширения | Description |
|---|---|
| Расширение пользовательских скриптов для Windows | Выполнение скриптов на виртуальной машине Azure. |
| Расширение диагностики Azure | Управление диагностикой Azure. |
| Расширение VMAccess | Управление пользователями и учетными данными. |
Дальнейшие шаги
Дополнительные сведения о расширениях виртуальных машин см. в статье о расширениях и функциях виртуальных машин Azure.