Виртуальная машина linux в облаке

Поддержка cloud-init для виртуальных машин в Azure

В этой статье объясняется, как cloud-init поддерживает настройку виртуальной машины или Масштабируемые наборы виртуальных машин во время подготовки в Azure. Эти настройки конфигурации cloud-init выполняются при первой загрузке, если в Azure подготовлены все нужные ресурсы.

Подготовка виртуальной машины — это процесс, в котором Azure передает значения параметров создания виртуальной машины, такие как имя узла, имя пользователя и пароль, и делает их доступными для виртуальной машины при загрузке. «Агент подготовки» принимает эти значения, настраивает виртуальную машину, а, закончив, передает отчет.

Azure поддерживает два агента подготовки — cloud-init и агент Linux для Azure (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 поддерживаются или находятся в предварительной версии, поэтому вы можете использовать эти пакеты с ОС в пользовательском образе.
  • документы «Образ готов для cloud-init», если образ уже настроен для использования cloud-init.
Читайте также:  Rdp client linux remmina

Canonical

Издатель/версия ПРЕДЛОЖЕНИЕ номер SKU Версия Образ готов для cloud-init Поддержка пакетов cloud-init в Azure
Canonical 22.04 UbuntuServer 22.04-LTS последняя да да
Canonical 20.04 UbuntuServer 20.04-LTS последняя да да
Canonical 18.04 UbuntuServer 18.04-LTS последняя да да

RHEL

CentOS

OpenLogic теперь носит название Rogue Wave Software.

Oracle;

SUSE SLES

Debian

Издатель/версия ПРЕДЛОЖЕНИЕ номер SKU Версия Образ готов для cloud-init Поддержка пакетов cloud-init в Azure
debian (поколение 1) debian-10 10-cloudinit 10:0.20201013.422 да да — поддержка из пакета версии: 20.2-2~deb10u1
debian (поколение 2) debian-10 10-cloudinit-gen2 0.20201013.422 да да — поддержка из пакета версии: 20.2-2~deb10u1

В настоящее время 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.

Читайте также:  Основа безопасности ос linux

Развертывание виртуальной машины с поддержкой 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 (не на локальном компьютере). Вы можете использовать любой редактор по своему усмотрению. Введите sensible-editor cloud-init.txt , чтобы создать файл и просмотреть список доступных редакторов. В этом примере мы используем редактор nano . Выберите первый пункт, чтобы использовать редактор nano. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
— apache2
# cloud-config
package_upgrade: true
packages:
— httpd
# cloud-config
package_upgrade: true
packages:
— httpd

cloud-init использует несколько типов входных данных, и в первой строке customData/userData cloud-init указывает, как следует обрабатывать входные данные, например #cloud-config обозначает, что содержимое должно обрабатываться как конфигурация cloud-init.

Нажмите клавиши Ctrl + X , чтобы выйти из файла, введите y , чтобы сохранить изменения в файле, а затем нажмите клавишу Enter , чтобы подтвердить имя файла при выходе.

Последним шагом является создание виртуальной машины с использованием команды az vm create.

В следующем примере создается виртуальная машина с именем centos74 и ключи SSH, если они еще не существуют в расположении ключа по умолчанию. Чтобы использовать определенный набор ключей, используйте параметр —ssh-key-value . Используйте параметр —custom-data , чтобы передать файл конфигурации cloud-init. Укажите полный путь к конфигурации cloud-init.txt, если этот файл сохранен вне текущего рабочего каталога.

az vm create \ --resource-group myResourceGroup \ --name centos74 \ --image OpenLogic:CentOS-CI:7-CI:latest \ --custom-data cloud-init.txt \ --generate-ssh-keys 

После создания виртуальной машины в Azure CLI появятся сведения о вашем развертывании. Запишите значение publicIpAddress . Этот адрес используется для доступа к виртуальной машине. На создание виртуальной машины, установку пакетов и запуск приложения может потребоваться некоторое время. Некоторые фоновые задачи продолжают работу после возврата к командной строке в Azure CLI. Вы можете подключиться к виртуальной машине по протоколу SSH и выполнить шаги, описанные в разделе «Устранение неполадок», чтобы просмотреть журналы cloud-init.

Читайте также:  Chkdsk аналог в linux

Вы также можете развернуть виртуальную машину с поддержкой cloud-init, передав параметры в шаблоне ARM.

Устранение неполадок cloud-init

После подготовки виртуальной машины cloud-init запустит все модули и скрипты, заданные в параметре —custom-data , для ее настройки. Если вам необходимо устранить ошибки или пропуски в конфигурации, найдите имя модуля ( disk_setup или runcmd , к примеру) в журнале cloud-init, который находится в файле /var/log/cloud-init.log.

Не каждый сбой модуля приводит к неустранимому сбою всей конфигурации cloud-init. Например, если используется модуль runcmd , при сбое скрипта cloud-init все еще будет отображать сообщение об успешной подготовке, так как выполнен модуль 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 см. в следующих документах:

Источник

Оцените статью
Adblock
detector