Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение пользовательских скриптов версии 2 скачивает и запускает скрипты на виртуальных машинах Azure. Используйте это расширение для настройки после развертывания, установки программного обеспечения или любой другой задачи настройки или управления. Вы можете скачать скрипты из службы хранилища Azure или другого доступного интернет-расположения или предоставить их в среду выполнения расширения.
Расширение Custom Script интегрируется с шаблонами Azure Resource Manager. Вы также можете запустить его с помощью Azure CLI, Azure PowerShell или REST API Azure Virtual Machines.
В этой статье описывается, как использовать расширение пользовательского скрипта из Azure CLI и как запустить расширение с помощью шаблона Azure Resource Manager. В этой статье также показаны шаги по устранению неполадок в системах Linux.
Существует две версии расширения пользовательских скриптов:
- Версия 1 — Microsoft.OSTCExtensions.CustomScriptForLinux
- Версия 2 — Microsoft.Azure.Extensions.CustomScript
Используйте версию 2 для новых и существующих развертываний. Новая версия является заменой раскрывающегося списка. Миграция выполняется так же легко, как изменение имени и версии. Изменение конфигурации расширения не требуется.
Примечание.
Новое! Попробуйте использовать поддержку виртуальной машины для ускорения диагностикиРекомендуется запустить VM assist для Windows или VM assist для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.
Предпосылки
Поддерживаемые дистрибутивы Linux
| Publisher | Распределение | x64 | ARM64 |
|---|---|---|---|
| Сообщество Alma Linux | AlmaLinux | 8.x+, 9.x+ | 8.x+, 9.x+ |
| Кредатив | Debian | 10+ | 11.x+ |
| Kinvolk | Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
| Microsoft | Azure Linux | 2.x | 2.x |
| Проект openSUSE | openSUSE | 12.3+ | Не поддерживаются |
| Oracle; | Oracle Linux | 6.4+, 7.x+, 8.x+ | Не поддерживаются |
| Red Hat | Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ | 8.6+, 9.0+, 10.x+ |
| CIQ | Рокки Linux | 9.x+ | 9.x+ |
| SUSE | SLES | 12.x+, 15.x+ | 15.x с пакетом обновления 4 (SP4) |
| Канонический | Ubuntu (выпуски LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Расположение скрипта
Вы можете задать расширение для использования учетных данных хранилища BLOB-объектов Azure, чтобы получить доступ к хранилищу BLOB-объектов Azure. Скрипт может находиться в любом расположении при условии, что виртуальная машина может осуществлять маршрутизацию в конечную точку, например, GitHub или внутренний файловый сервер.
Подключение к Интернету
Чтобы загрузить скрипт из внешнего источника, например из GitHub или службы хранилища Azure, нужно открыть другой брандмауэр или порты группы безопасности сети (NSG). К примеру, если ваш скрипт находится в службе хранилища Azure, можете предоставить к нему доступ с помощью служебных тегов для хранилища Azure NSG.
Если ваш скрипт находится на локальном сервере, вам может потребоваться открыть другие порты брандмауэра или порты группы безопасности сети (NSG).
Советы
- Наибольшая частота сбоев для этого расширения обусловлена синтаксическими ошибками в скрипте. Проверьте, что скрипт запускается без ошибок. Добавьте больше возможностей ведения журнала в скрипт, чтобы упростить поиск ошибок.
- Пишите идемпотентные скрипты, чтобы их повторные запуски не вызывали изменения системы.
- Выполняемые скрипты не должны запрашивать ввод данных пользователем.
- Выполнение скрипта разрешено в течение 90 минут. Все больше приводит к сбою подготовки расширения.
- Не помещайте перезагрузки в скрипт. Перезапуск вызывает проблемы с другими устанавливаемыми расширениями, и расширение не будет работать после перезагрузки.
- Если у вас есть скрипт, вызывающий перезагрузку перед установкой приложений и запуском скриптов, назначьте время перезагрузки с помощью задания cron или таких инструментов, как расширения DSC, Chef или Puppet.
- Не запускайте скрипт, который вызывает остановку или обновление агента Linux для Azure. Это может оставить расширение в переходном состоянии и привести к истечении времени ожидания.
- Расширение выполняет скрипт только один раз. Если вы хотите запустить скрипт во всех запусках, вы можете использовать образ cloud-init и использовать модуль Scripts Per Boot . Кроме того, можно использовать скрипт для создания модуля службы systemd.
- К виртуальной машине можно применить только одну версию расширения. Чтобы запустить второй пользовательский скрипт, можно применить к имеющемуся расширению новую конфигурацию. Кроме того, можно удалить расширение пользовательских скриптов и повторно применить его с измененным скриптом.
- Чтобы запланировать время выполнения скрипта, воспользуйтесь расширением что бы создать задание cron.
- Во время выполнения скрипта на портале Azure или в CLI вы увидите только переходное состояние расширения. Если требуются более частые обновления состояния выполняющегося скрипта, создайте собственное решение.
- Расширение пользовательских скриптов не предусматривает собственную поддержку прокси-серверов. Но вы можете использовать средство передачи файлов, которое поддерживает прокси-серверы в скрипте, такое как
Curl. - Учитывайте нестандартные расположения каталогов, которые могут использоваться вашими скриптами или командами. Логика для обработки этой ситуации.
Схема расширения
В конфигурации расширения пользовательских сценариев указываются такие параметры, как расположение сценария и команда для его выполнения. Эту информацию можно хранить в файлах конфигурации, указать в командной строке или в шаблоне Azure Resource Manager.
Конфиденциальные данные можно хранить в защищенной конфигурации, которая шифруется и расшифровывается только на целевой виртуальной машине. Защищенную конфигурацию можно использовать для команд, которые содержат секретные данные, например пароли. Ниже приведен пример:
{
"name": "config-app",
"type": "Extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2019-03-01",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.1",
"autoUpgradeMinorVersion": true,
"settings": {
"skipDos2Unix":false,
"timestamp":123456789
},
"protectedSettings": {
"commandToExecute": "<command-to-execute>",
"script": "<base64-script-to-execute>",
"storageAccountName": "<storage-account-name>",
"storageAccountKey": "<storage-account-key>",
"fileUris": ["https://.."],
"managedIdentity" : "<managed-identity-identifier>"
}
}
}
Примечание.
Свойство managedIdentity не должно применяться вместе со свойствами storageAccountName или storageAccountKey.
Значения свойств
| Имя | Значение или пример | Тип данных |
|---|---|---|
| apiVersion | 2019-03-01 |
дата |
| издатель | Microsoft.Azure.Extensions |
струна |
| тип | CustomScript |
струна |
| typeHandlerVersion | 2.1 |
int |
| fileUris | https://github.com/MyProject/Archive/MyPythonScript.py |
array |
| commandToExecute | python MyPythonScript.py \<my-param1> |
струна |
| сценарий | IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= |
струна |
| skipDos2Unix | false |
boolean |
| отметка времени | 123456789 |
32-разрядное целое число |
| storageAccountName | examplestorageacct |
струна |
| storageAccountKey | TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
струна |
| управляемая идентичность |
{ } или { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } или { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } |
Объект JSON |
Подробности о значениях свойств
| Недвижимость | Необязательный или обязательный | Сведения |
|---|---|---|
| apiVersion | Неприменимо | Самую свежую версию API можно найти с помощью Обозревателя ресурсов или с помощью команды az provider list -o json в Azure CLI. |
| fileUris | Необязательно | URL-адреса для загрузки файлов. |
| commandToExecute | Требуется, если script не задано |
Скрипт точки входа для запуска. Используйте это свойство вместо script, если команда содержит секреты, например пароли. |
| сценарий | Требуется, если commandToExecute не задано |
Скрипт в кодировке Base64 и при необходимости gzip'ed, выполняемый /bin/sh. |
| skipDos2Unix | Необязательно | Задайте для этого значения значение false , если требуется пропустить преобразование dos2unix URL-адресов или скриптов на основе скриптов. |
| отметка времени | Необязательно | Меняйте это значение, только чтобы вызвать перезапуск скрипта. Допускается любое целое значение, если оно отличается от предыдущего значения. |
| storageAccountName | Необязательно | Название учетной записи хранения. Если указаны учетные данные хранилища, все значения fileUris должны иметь формат URL-адресов для BLOB-объектов Azure. |
| storageAccountKey | Необязательно | Ключ доступа к учетной записи хранения. |
| управляемая идентичность | Необязательно | Управляемая идентичность для скачивания файлов. Значения : clientId (необязательно, строка), которая является идентификатором клиента управляемого удостоверения и objectId (необязательной, строкой), которая является идентификатором объекта управляемого удостоверения. |
Общедоступные параметры отправляются в виде открытого текста на виртуальную машину, в которой выполняется скрипт. Защищенные параметры шифруются с помощью ключа, известного только в Azure и виртуальной машине. Параметры сохраняются на виртуальной машине по мере их отправки. Это значит, что если параметры были зашифрованы, они сохранятся в таком виде и на виртуальной машине. Сертификат, используемый для расшифровки зашифрованных значений, хранится на виртуальной машине. При необходимости сертификат также используется для расшифровки параметров во время выполнения.
Открытые параметры могут быть полезны для отладки, но мы настоятельно рекомендуем использовать защищенные параметры.
Приведенные ниже значения можно задать в открытых или защищенных параметрах. Расширение отклоняет любую конфигурацию, в которой эти значения задаются как в общедоступных, так и защищенных параметрах.
commandToExecutescriptfileUris
Свойство: skipDos2Unix
Предыдущая версия расширения Microsoft.OSTCExtensions.CustomScriptForLinux пользовательского скрипта автоматически преобразует файлы DOS в файлы UNIX, переводя \r\n в \n. Этот перевод по-прежнему присутствует и включен по умолчанию. Это преобразование применяется ко всем файлам, скачанным из fileUris, или к параметрам скрипта, основанного на любом из приведенных ниже критериев:
- Расширение .sh, .txt, .py или .pl. Параметр скрипта всегда соответствует этому критерию, так как предполагается, что сценарий выполняется с /bin/sh. Параметр скрипта сохраняется как script.sh на виртуальной машине.
- Файл начинается с
#!.
Значение по умолчанию равно false, что означает преобразование dos2unix выполнено. Преобразование dos2unix можно пропустить, задав для параметра skipDos2Unix значение true:
{
"fileUris": ["<url>"],
"commandToExecute": "<command-to-execute>",
"skipDos2Unix": true
}
Свойство сценарий
Расширение пользовательских скриптов поддерживает выполнение определяемого пользователем скрипта. Параметры скрипта объединяют commandToExecute и fileUris в один параметр. Вместо того чтобы настраивать файл для скачивания из службы хранилища Azure или GitHub Gist, можно зашифровать скрипт в качестве параметра. Скрипт можно использовать для замены commandToExecute и fileUris.
Есть некоторые требования:
- Скрипт должен быть представлен в кодировке Base64.
- Скрипт также можно при необходимости сжать в формате GZIP.
- Настройка скрипта может использоваться в публичных или защищенных настройках.
- Максимальный размер данных параметра script — 256 КБ. Если скрипт превышает этот размер, он не выполняется.
К примеру, следующий скрипт сохранен в файл /script.sh/:
#!/bin/sh
echo "Creating directories ..."
mkdir /data
chown user:user /data
mkdir /appdata
chown user:user /appdata
Вы должны создать правильную настройку скриптового расширения Custom Script Extension, используя выходные данные следующей команды.
cat script.sh | base64 -w0
{
"script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}
В большинстве случаев скрипт можно в дальнейшем при необходимости сжать в формат GZIP, чтобы еще больше уменьшить размер. Расширение пользовательских скриптов автоматически обнаруживает использование сжатия в формат GZIP.
cat script | gzip -9 | base64 -w 0
Для выполнения скрипта расширение для пользовательских сценариев использует следующий алгоритм:
- Убедитесь, что длина значения скрипта не превышает 256 КБ.
- Base64 декодирует значение скрипта.
- Попробуйте использовать декодированные значения Base64.
- Запишите декодированное и по желанию распакованное значение на диск: /var/lib/waagent/custom-script/#/script.sh.
- Запустите скрипт с помощью команды
_/bin/sh -c /var/lib/waagent/custom-script/#/script.sh.
Свойство: managedIdentity
Примечание.
Это свойство должно быть задано только в защищенных параметрах.
Расширение пользовательского скрипта версии 2.1 и более поздних версий поддерживает управляемые удостоверения для скачивания файлов из URL-адресов, предоставленных в параметре fileUris . Этот подход позволяет расширению Custom Script получать доступ к частным blob-объектам или контейнерам хранилища Azure без необходимости передавать секреты, такие как токены общей подписи (SAS) или ключи учетной записи хранилища.
Чтобы использовать эту функцию, добавьте назначаемое системой удостоверение или удостоверение, назначаемое пользователем , в масштабируемый набор виртуальных машин, где должно выполняться расширение пользовательского скрипта. Затем предоставьте управляемому удостоверению доступ к контейнеру службы хранилища Azure или большому двоичному объекту.
Чтобы использовать назначаемое системой удостоверение на целевой виртуальной машине или масштабируемом наборе виртуальных машин, задайте managedidentity пустой объект JSON.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : {}
}
Чтобы использовать назначаемое пользователем удостоверение на целевой виртуальной машине или масштабируемом наборе виртуальных машин, настройте managedidentity идентификатор клиента или идентификатор объекта управляемого удостоверения.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" }
}
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }
}
Примечание.
Свойство managedIdentity не должно применяться вместе со свойствами storageAccountName или storageAccountKey.
Развертывание шаблона
Вы можете развернуть расширения виртуальной машины Azure с помощью шаблонов диспетчера ресурсов Azure. Схема JSON, подробно описанная в предыдущем разделе, может использоваться в шаблоне Azure Resource Manager для запуска расширения пользовательского скрипта во время развертывания шаблона. Пример шаблона, который содержит расширение пользовательских скриптов, можно найти на сайте GitHub.
{
"name": "config-app",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2019-03-01",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.1",
"autoUpgradeMinorVersion": true,
"settings": {
},
"protectedSettings": {
"commandToExecute": "sh hello.sh <param2>",
"fileUris": ["https://github.com/MyProject/Archive/hello.sh"
]
}
}
}
Примечание.
Эти имена свойств чувствительны к регистру. Чтобы избежать проблем с развертыванием, используйте имена, как показано здесь.
Azure CLI (интерфейс командной строки Azure)
При использовании Azure CLI для запуска расширения пользовательского скрипта создайте один или несколько файлов конфигурации. Как минимум, файл конфигурации должен содержаться commandToExecute. Команда az vm extension set ссылается на файл конфигурации:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings ./script-config.json
Кроме того, можно указать параметры в команде в виде строки в формате JSON. Такой подход позволяет задать конфигурацию во время выполнения и без отдельного файла конфигурации.
az vm extension set \
--resource-group exttest \
--vm-name exttest \
--name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings '{"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],"commandToExecute": "./config-music.sh"}'
Пример: общедоступная конфигурация с файлом сценария
В этом примере используется следующий файл скрипта с именем script-config.json:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
"commandToExecute": "./config-music.sh"
}
Создайте файл скрипта с помощью текстового редактора или с помощью следующей команды CLI:
cat <<EOF > script-config.json { "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"], "commandToExecute": "./config-music.sh" } EOFВыполните следующую команду:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json
Пример: общедоступная конфигурация без файла сценария
В этом примере используется следующее содержимое в формате JSON:
{
"commandToExecute": "apt-get -y update && apt-get install -y apache2"
}
Выполните следующую команду:
az vm extension set \
--resource-group tim0329vmRG \
--vm-name tim0329vm --name customScript \
--publisher Microsoft.Azure.Extensions \
--settings '{"commandToExecute": "apt-get -y update && apt-get install -y apache2"}'
Пример: открытые и защищенные файлы конфигурации
Используйте общедоступный файл конфигурации, чтобы указать универсальный код ресурса (URI) файла скрипта:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}
Используйте защищенный файл конфигурации, чтобы указать команду для выполнения:
{
"commandToExecute": "./config-music.sh"
}
Создайте общедоступный файл конфигурации с помощью текстового редактора или с помощью следующей команды CLI:
cat <<EOF > script-config.json { "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"] } EOFСоздайте защищенный файл конфигурации с помощью текстового редактора или с помощью следующей команды CLI:
cat <<EOF > protected-config.json { "commandToExecute": "./config-music.sh" } EOFВыполните следующую команду:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM \ --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json \ --protected-settings ./protected-config.json
Virtual Machine Scale Sets
Если развернуть расширение пользовательского скрипта на портале Azure, у вас нет контроля за истечением срока действия маркера SAS для доступа к скрипту в учетной записи хранения. Начальное развертывание работает, но по истечении срока действия SAS-токена учетной записи хранения любая последующая операция масштабирования завершается ошибкой, потому что расширение для пользовательских скриптов больше не может получить доступ к учетной записи хранения.
Рекомендуется использовать PowerShell, Azure CLI или шаблон Azure Resource Manager при развертывании расширения пользовательского скрипта в масштабируемом наборе виртуальных машин. Таким образом, вы можете использовать управляемое удостоверение или иметь прямой контроль срока действия маркера SAS для доступа к скрипту в учетной записи хранения до тех пор, пока вам потребуется.
Устранение неполадок
Когда расширение пользовательских сценариев выполняется, сценарий создается или загружается в каталог, который выглядит, как показано в следующем примере. Выходные данные команды также сохраняются в этот каталог в файлах stdout и stderr.
sudo ls -l /var/lib/waagent/custom-script/download/0/
Чтобы устранить неполадки, сначала проверьте журнал агента Linux и убедитесь, что расширение запущено:
sudo cat /var/log/waagent.log
Найдите выполнение расширения. Выглядит примерно так:
2018/04/26 17:47:22.110231 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] [Enable] current handler state is: notinstalled
2018/04/26 17:47:22.306407 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Download, message=Download succeeded, duration=167
2018/04/26 17:47:22.339958 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Initialize extension directory
2018/04/26 17:47:22.368293 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Update settings file: 0.settings
2018/04/26 17:47:22.394482 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Install extension [bin/custom-script-shim install]
2018/04/26 17:47:23.432774 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Install, message=Launch command succeeded: bin/custom-script-shim install, duration=1007
2018/04/26 17:47:23.476151 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Enable extension [bin/custom-script-shim enable]
2018/04/26 17:47:24.516444 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Enable, message=Launch command succeeded: bin/custom-sc
В приведенных выше выходных данных:
-
Enable— означает момент запуска команды. -
Download— относится к скачиванию пакета расширения пользовательских скриптов из Azure, а не файлов сценария, указанных вfileUris.
Расширение сценариев Azure создает журнал, который можно найти здесь:
sudo cat /var/log/azure/custom-script/handler.log
Найдите отдельное выполнение. Выглядит примерно так:
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=start
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=pre-check
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="comparing seqnum" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="seqnum saved" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="reading configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="read configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating json schema"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="json schema valid"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsing configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsed configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating configuration logically"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validated configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="creating output directory" path=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="created output directory"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 files=1
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download start"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download complete" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing protected commandToExecute" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executed command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=enabled
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=end
Здесь вы можете увидеть:
- команда
enable, запускающая этот журнал; - Параметры, переданные расширению.
- Расширение, скачающее файл и результат этого действия.
- выполняемая команда и результат выполнения.
Вы также можете получить состояние выполнения расширения пользовательского скрипта, включая фактические аргументы, переданные в качестве commandToExecute, с помощью Azure CLI:
az vm extension list -g myResourceGroup --vm-name myVM
Выходные данные выглядят так:
[
{
"autoUpgradeMinorVersion": true,
"forceUpdateTag": null,
"id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/customscript",
"resourceGroup": "rgname",
"settings": {
"commandToExecute": "sh script.sh > ",
"fileUris": [
"https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh",
"https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh"
]
},
"tags": null,
"type": "Microsoft.Compute/virtualMachines/extensions",
"typeHandlerVersion": "2.0",
"virtualMachineExtensionType": "CustomScript"
},
{
"autoUpgradeMinorVersion": true,
"forceUpdateTag": null,
"id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/OmsAgentForLinux",
"instanceView": null,
"location": "eastus",
"name": "OmsAgentForLinux",
"protectedSettings": null,
"provisioningState": "Succeeded",
"publisher": "Microsoft.EnterpriseCloud.Monitoring",
"resourceGroup": "rgname",
"settings": {
"workspaceId": "workspaceid"
},
"tags": null,
"type": "Microsoft.Compute/virtualMachines/extensions",
"typeHandlerVersion": "1.0",
"virtualMachineExtensionType": "OmsAgentForLinux"
}
]
Проблемы синтаксиса Azure CLI
Azure CLI может выполняться в нескольких средах оболочки, но с небольшими вариантами формата. Если вы столкнулись с непредвиденными результатами команд Azure CLI, см. статью Как успешно использовать Azure CLI.
Дальнейшие действия
Смотрите код, текущие проблемы и версии в custom-script-extension-linux.