#azure #azure-virtual-machine #azure-vm-scale-set
#azure #azure-virtual-machine #azure-vm-scale-set
Вопрос:
Я пытаюсь выполнить развертывание в своем наборе виртуальных машин, используя расширение пользовательского скрипта, как показано ниже.
az vmss extension set --debug --name 'CustomScriptExtension' `
--resource-group 'my-rg' `
--publisher 'Microsoft.Compute' `
--version '1.9.5' `
--vmss-name 'myvmss' `
--settings '{"commandToExecute": "powershell.exe ./download-package.ps1", "fileUris": ["https://[REDACTED].blob.core.windows.net/upload/download-package.ps1"]}' `
--protected-settings '{"managedIdentity": {"objectId": "[REDACTED]"}}'
При запуске я получаю следующую ошибку:
cli.azure.cli.core.azclierror: сбой развертывания. Идентификатор корреляции: 73f4d16b-afe0-4373-8773- 1d7dd7d26940. Виртуальная машина сообщила о сбое при обработке расширения ‘CustomScriptExtension’. Сообщение об ошибке: «Не удалось загрузить все указанные файлы. Выход. Сообщение об ошибке: исключение типа «Microsoft.WindowsAzure.Гостевой агент.Плагины.CustomScriptHandler.Был вызван Downloader.MsiNotFoundException’.»
Более подробная информация об устранении неполадок доступна по адресу https://aka.ms/VMExtensionCSEWindowsTroubleshoot Сбой развертывания. Идентификатор корреляции: 73f4d16b-afe0-4373-8773- 1d7dd7d26940. Виртуальная машина сообщила о сбое при обработке расширения ‘CustomScriptExtension’. Сообщение об ошибке: «Не удалось загрузить все указанные файлы. Выход. Сообщение об ошибке: исключение типа «Microsoft.WindowsAzure.Гостевой агент.Плагины.CustomScriptHandler.Был вызван Downloader.MsiNotFoundException’.»
Для загрузки файла требуется проверка подлинности, поэтому я присвоил набору scale идентификатор, присвоенный системой, и предоставил ему Storage Blob Data Reader
роль в учетной записи хранения, в которой размещен файл powershell.
Журналы пользовательских расширений на виртуальной машине предполагают, что не удалось получить идентификатор виртуальной машины:
[7108 00000001] [11/20/2020 09:12:28.79] [INFO] Handler successfully enabled
[7108 00000001] [11/20/2020 09:12:28.80] [INFO] Loading configuration for sequence number 1
[7108 00000001] [11/20/2020 09:12:28.84] [INFO] HandlerSettings = ProtectedSettingsCertThumbprint: [REDACTED], ProtectedSettings: {[REDACTED]}, PublicSettings: {FileUris: [https://[REDACTED].blob.core.windows.net/upload/download-package.ps1], CommandToExecute: powershell.exe ./download-package.ps1}
[7108 00000001] [11/20/2020 09:12:29.26] [INFO] Downloading files specified in configuration...
[7108 00000001] [11/20/2020 09:12:30.90] [INFO] Attempting to get MSI from IMDS
[7108 00000001] [11/20/2020 09:12:31.04] [WARN] WebClient: non retryable error occurred System.Net.WebException: The remote server returned an error: (400) Bad Request.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequestamp; request)
at System.Net.WebClient.DownloadString(Uri address)
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.WebClient.<>c__DisplayClass3_0.<DownloadStringWithRetries>b__0()
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.WebClientWithRetryAbstract.ActionWithRetries(Action action)
[7108 00000001] [11/20/2020 09:12:31.14] [ERROR] Unknown exception occurred while attempting to get MSI token System.Net.WebException: The remote server returned an error: (400) Bad Request.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequestamp; request)
at System.Net.WebClient.DownloadString(Uri address)
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.WebClient.<>c__DisplayClass3_0.<DownloadStringWithRetries>b__0()
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.WebClientWithRetryAbstract.ActionWithRetries(Action action)
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.WebClient.DownloadStringWithRetries(Uri address)
at Microsoft.WindowsAzure.GuestAgent.Plugins.MsiUtils.MsiProvider.GetMsiHelper(NameValueCollection queries)
[7108 00000001] [11/20/2020 09:12:31.14] [INFO] Msi was not obtained
Я могу получить токен удостоверения из конечной точки метаданных через Invoke-WebRequest -Method Get -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01amp;resource=https://management.azure.com/'
so, который, по-видимому, настроен правильно.
Мы будем признательны за любые советы о том, в чем может заключаться проблема или как дополнительно диагностировать эту проблему.
Комментарии:
1. У меня точно такая же проблема, но с назначенными пользователем управляемыми удостоверениями. Похоже, что thia просто сломана, как описано в этом выпуске github: github.com/Azure/custom-script-extension-linux/issues/165 это не было исправлено более чем через год после получения сообщения.
Ответ №1:
Вот несколько исправлений, которые вы можете попробовать
- Идентификатор объекта управляемой идентификации может быть неверным.
- Пожалуйста, также переместите commandToExecute и FileUris в защищенные настройки с управляемыми идентификаторами.
- Если вы хотите использовать назначенную системой управляемую идентификацию, вам не нужно передавать идентификатор клиента или ObjectId, больше информации здесь https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows#property-managedidentity
редактировать: пожалуйста, явно передайте пустой объект json в качестве параметров при добавлении commandToExecute и fileUris в защищенные параметры. В противном случае расширения не будут работать из-за дублирования настроек.
Комментарии:
1. Спасибо за ответ. Ваши замечания верны, и я обновил свой код (переместил commandToExecute и FileUris в защищенные настройки и установил управляемую идентификацию в пустой блок, чтобы использовать идентификатор, назначенный системой). К сожалению, он по-прежнему не может получить доступ к файлу в хранилище больших двоичных объектов, сейчас он получает 403. Это работает, если я либо делаю большой двоичный объект общедоступным, либо использую ключи доступа, поэтому я не думаю, что это проблема с подключением. Я просто не могу получить его для аутентификации с помощью управляемой идентификации.