Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
В этой статье объясняется поддержка, которая существует для cloud-init для настройки виртуальных машин или масштабируемых наборов виртуальных машин во время подготовки в Azure. Эти конфигурации cloud-init запускаются при первой загрузке после подготовки ресурсов в Azure.
Подготовка виртуальных машин — это процесс, в котором Azure передает значения параметров создания виртуальной машины, такие как имя узла, имя пользователя и пароль, и сделать их доступными для виртуальной машины по мере загрузки. Агент подготовки будет потреблять эти значения, настраивать виртуальную машину и сообщать обратно после завершения.
Azure поддерживает два агента подготовки cloud-init и агент Azure Linux (WALA).
Обзор cloud-init
Cloud-init — это широко используемый подход для настройки виртуальной машины Linux при первой загрузке. Вы можете использовать cloud-init для установки пакетов, записи файлов или настройки пользователей и параметров безопасности. Так как cloud-init вызывается при начальной загрузке, к вашей конфигурации не нужно применять какие-либо дополнительные действия или агентов. Дополнительные сведения о том, как правильно отформатировать #cloud-config файлы или другие входные данные, см. на сайте документации по cloud-init.
#cloud-config файлы — это текстовые файлы, закодированные в base64.
Cloud-init также работает в разных дистрибутивах. Например, вы не используете apt-get install или yum install для установки пакета. Вместо этого можно определить список пакетов для установки. Cloud-init автоматически использует собственное средство управления пакетами для выбранного дистрибутива.
Мы активно работаем с нашими утвержденными партнерами дистрибутива Linux, чтобы иметь доступные в Azure Marketplace образы с поддержкой cloud-init. Эти образы позволяют легко работать с виртуальными машинами и масштабируемыми наборами виртуальных машин и масштабируемых наборов облачных инициализаций. Изначально мы сотрудничаем с утвержденными партнерами дистрибутива Linux и вышестоящими клиентами, чтобы обеспечить функции cloud-init с ОС в Azure, а затем пакеты обновляются и становятся общедоступными в репозиториях дистрибутивов.
Существует два этапа, чтобы сделать cloud-init доступными для поддерживаемых дистрибутивов Linux в Azure, поддержке пакетов и поддержке образов:
- Документы " поддержка пакетов cloud-init в Azure", которые пакеты cloud-init поддерживаются или в предварительной версии, поэтому эти пакеты можно использовать с ОС в пользовательском образе.
- Документы "image-cloud-init ready", если образ уже настроен для использования cloud-init.
Канонический
| Издатель или версия | Offer | артикул | Версия | image cloud-init ready | Поддержка пакетов cloud-init в Azure |
|---|---|---|---|---|---|
| Канонический 24.04 | UbuntuServer | 24.04-LTS | последний | yes | yes |
| Канонический 22.04 | UbuntuServer | 22.04-LTS | последний | yes | yes |
| Канонический 20.04 | UbuntuServer | 20.04-LTS | последний | yes | yes |
RHEL (Red Hat Enterprise Linux)
| Издатель или версия | Offer | артикул | Версия | image cloud-init ready | Поддержка пакетов cloud-init в Azure |
|---|---|---|---|---|---|
| RedHat 7 | RHEL (Red Hat Enterprise Linux) | 7.7, 7.8, 7_9 | последний | yes | yes |
| RedHat 8 | RHEL (Red Hat Enterprise Linux) | 8.1, 8.2, 8_3, 8_4 | последний | yes | yes |
| RedHat 9 | RHEL (Red Hat Enterprise Linux) | 9_0, 9_1 | последний | yes | yes |
- Все остальные номера SKU RedHat, начиная с RHEL 7 (версии 7.7) и RHEL 8 (версия 8.1), включая образы 1-го поколения и 2-го поколения, подготавливаются с помощью cloud-init. Cloud-init не поддерживается в RHEL 6.
Oracle;
| Издатель или версия | Offer | артикул | Версия | image cloud-init ready | Поддержка пакетов cloud-init в Azure |
|---|---|---|---|---|---|
| Oracle 7 | Oracle Linux | 77, 78, ol79 | последний | yes | yes |
| Oracle 8 | Oracle Linux | 81, ol82, ol83-lvm, ol84-lvm | последний | yes | yes |
- Все остальные номера SKU Oracle начиная с Oracle 7 (версии 7.7) и Oracle 8 (версия 8.1), включая образы 1-го поколения и 2-го поколения, подготавливаются с помощью cloud-init.
SUSE SLES
| Издатель или версия | Offer | артикул | Версия | image cloud-init ready | Поддержка пакетов cloud-init в Azure |
|---|---|---|---|---|---|
| SUSE 15 | SLES (SUSE Linux Enterprise Server) | все SPS | последний | yes | yes |
| SUSE 12 | SLES (SUSE Linux Enterprise Server) | sp5 | последний | yes | yes |
- SUSE Linux Enterprise Server 12 — EOL с 31 октября 2024 г., SP5 — последний пакет обновления 5 (SP5)
Debian
| Издатель или версия | Offer | артикул | Версия | image cloud-init ready | Поддержка пакетов cloud-init в Azure |
|---|---|---|---|---|---|
| debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.1015 | yes | yes |
| debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.991 | yes | yes |
| debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.999 | yes | yes |
В настоящее время Azure Stack поддерживает подготовку образов с поддержкой cloud-init.
Какова разница между cloud-init и агентом Linux (WALA)?
WALA — это агент, зависящий от платформы Azure, используемый для подготовки и настройки виртуальных машин и обработки расширений Azure.
Мы повышаем задачу настройки виртуальных машин для использования cloud-init вместо агента Linux, чтобы разрешить существующим клиентам cloud-init использовать текущие скрипты cloud-init или новые клиенты, чтобы воспользоваться преимуществами расширенных функций конфигурации cloud-init. Если у вас есть инвестиции в скрипты cloud-init для настройки систем Linux, нет дополнительных параметров, необходимых для включения процесса cloud-init.
Cloud-init не может обрабатывать расширения Azure, поэтому WALA по-прежнему требуется в образе для обработки расширений, но его код подготовки отключен. Для утвержденных дистрибутивов Linux, которые преобразуются в подготовку cloud-init, они установили WALA и правильно настроены.
При создании виртуальной машины, если вы не включаете переключатель Azure CLI --custom-data во время подготовки, cloud-init или WALA принимает минимальные параметры подготовки виртуальных машин, необходимые для подготовки виртуальной машины и завершения развертывания по умолчанию. Если вы ссылаетесь на конфигурацию cloud-init с параметром --custom-data , все, что содержится в пользовательских данных, будет доступно для cloud-init при загрузке виртуальной машины.
Конфигурации cloud-init, применяемые к виртуальным машинам, не имеют ограничений во времени и не приводят к сбою развертывания при истечении времени ожидания. Это не так для WALA, если вы измените WALA по умолчанию для обработки пользовательских данных, это не может превышать общее пособие на время подготовки виртуальных машин в 40 минут, если это так, создание виртуальной машины завершится ошибкой.
Подготовка виртуальных машин cloud-init без драйвера UDF
Начиная с cloud-init 21.2, вы можете использовать cloud-init для подготовки виртуальной машины в Azure без драйвера UDF. Если драйвер UDF недоступен на образе, cloud-init использует метаданные, доступные в службе метаданных экземпляра Azure для подготовки виртуальной машины. Этот параметр подходит только для ключей SSH и пользовательских данных. Чтобы передать пароль или пользовательские данные виртуальной машине во время подготовки, необходимо использовать драйвер UDF.
Развертывание виртуальной машины с поддержкой cloud-init
Развертывание виртуальной машины с поддержкой cloud-init так же просто, как и ссылка на дистрибутив с поддержкой cloud-init во время развертывания. Для поддержки дистрибутивов Linux необходимо включить и интегрировать cloud-init в свои базовые опубликованные образы Azure. Убедившись, что образ, который вы хотите развернуть, включен в cloud-init, можно использовать Azure CLI для развертывания образа.
Первым шагом при развертывании этого образа является создание группы ресурсов с помощью команды az group create . Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus .
az group create --name myResourceGroup --location eastus
Следующим шагом является создание файла в текущей оболочке с именем cloud-init.txt и вставка следующей конфигурации. В этом примере создайте файл в Cloud Shell, а не на локальном компьютере. Вы можете использовать любой редактор. Введите разумный редактор cloud-init.txt, чтобы создать файл и просмотреть список доступных редакторов. Используйте нужный редактор. Некоторые типичные варианты : nano, vim или ed. Убедитесь, что весь файл cloud-init копируется правильно, особенно в первой строке:
| SLES | Ubuntu | RHEL (Red Hat Enterprise Linux) |
|---|---|---|
# cloud-configpackage_upgrade: truepackages: - apache2 |
# cloud-configpackage_upgrade: truepackages: - httpd |
# cloud-configpackage_upgrade: truepackages: - httpd |
Замечание
Cloud-init имеет несколько типов входных данных, cloud-init будет использовать первую строку customData/userData, чтобы указать способ обработки входных данных, например #cloud-config указывает, что содержимое должно обрабатываться в виде конфигурации cloud-init.
Закройте файл и сохраните его в соответствии с редактором. Проверьте имя файла при выходе.
Последним шагом является создание виртуальной машины с помощью команды az vm create .
В следующем примере создается виртуальная машина с именем ubuntu2204 и создаются ключи SSH, если они еще не существуют в расположении ключа по умолчанию. Чтобы использовать определенный набор ключей, используйте --ssh-key-value этот параметр.
--custom-data Используйте параметр для передачи файла конфигурации cloud-init. Укажите полный путь к конфигурацииcloud-init.txt , если файл сохранен за пределами текущего рабочего каталога.
az vm create \
--resource-group myResourceGroup \
--name ubuntu2204 \
--image Canonical:UbuntuServer:22_04-lts:latest \
--custom-data cloud-init.txt \
--generate-ssh-keys
При создании виртуальной машины Azure CLI отображает сведения, относящиеся к развертыванию. Запишите publicIpAddress. Этот адрес используется для доступа к виртуальной машине. Требуется некоторое время для создания виртуальной машины, установки пакетов и запуска приложения. Существуют фоновые задачи, которые продолжают выполняться после возвращения Azure CLI в запрос. Вы можете выполнить SSH-подключение к виртуальной машине и выполнить действия, описанные в разделе "Устранение неполадок", чтобы просмотреть журналы cloud-init.
Вы также можете развернуть виртуальную машину с поддержкой cloud-init, передав параметры в шаблоне ARM.
Устранение неполадок с cloud-init
После подготовки виртуальной машины cloud-init выполняется через все модули и скрипты, определенные для --custom-data настройки виртуальной машины. Если вам нужно устранить ошибки или упущения из конфигурации, необходимо выполнить поиск имени модуля (disk_setup или runcmd например) в журнале cloud-init, расположенном в /var/log/cloud-init.log.
Замечание
Не каждый сбой модуля приводит к сбою общей конфигурации cloud-init. Например, при сбое скрипта при использовании модуля cloud-init по-прежнему сообщает о успешной runcmd подготовке, так как модуль runcmd выполнен.
Дополнительные сведения о ведении журнала cloud-init см. в документации по cloud-init
Телеметрия
Cloud-init собирает данные об использовании и отправляет его в корпорацию Майкрософт для улучшения наших продуктов и служб. Данные телеметрии собираются только во время процесса подготовки (первая загрузка виртуальной машины). Собранные данные помогают нам исследовать сбои подготовки и отслеживать производительность и надежность. Собранные данные не включают идентификаторы (личные идентификаторы). Ознакомьтесь с нашим заявлением о конфиденциальности , чтобы узнать больше. Ниже приведены некоторые примеры сбора данных телеметрии (это не исчерпывающий список): сведения, связанные с ОС (версия cloud-init, дистрибутив, версия ядра), метрики производительности основных действий подготовки виртуальных машин (время для получения аренды DHCP, время получения метаданных, необходимых для настройки виртуальной машины и т. д.), журнала cloud-init и журнала dmesg.
Коллекция телеметрии в настоящее время включена для большинства образов Marketplace, использующих cloud-init. Он включен, указав репортер телеметрии KVP для cloud-init. В большинстве образов Azure Marketplace эта конфигурация находится в файле /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Удаление этого файла во время подготовки образа отключает сбор данных телеметрии для любой виртуальной машины, созданной на основе этого образа.
Пример содержимого 10-azure-kvp.cfg
reporting:
logging:
type: log
telemetry:
type: hyperv
Дальнейшие шаги
Устранение неполадок с cloud-init.
Примеры изменений конфигурации в cloud-init см. в следующих документах: