Обновление и установка пакетов с помощью cloud-init на виртуальной машине Linux в Azure

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

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

Обновление виртуальной машины с помощью cloud-init

В целях безопасности вы можете настроить автоматическую установку последних обновлений на виртуальной машине при первом запуске. Так как cloud-init работает в разных дистрибутивах Linux, вам не нужно указывать aptили zypper yum диспетчер пакетов. Вместо этого следует указать package_upgrade, а процесс cloud-init самостоятельно определит правильный механизм для используемого дистрибутива.

В этом примере мы используем Azure Cloud Shell. Чтобы увидеть процесс обновления в действии, создайте файл с именем cloud_init_upgrade.txt и вставьте в него следующую конфигурацию: Вы можете использовать любой редактор. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка.

Скопируйте приведенный ниже текст и вставьте его в файл cloud_init_upgrade.txt. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка.

#cloud-config
package_upgrade: true
packages:
- httpd

Перед развертыванием необходимо создать группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Теперь создайте виртуальную машину с помощью команды az vm create и укажите файл cloud-init с помощью параметра --custom-data, как показано ниже.

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_upgrade.txt \
  --admin-username azureuser \
  --generate-ssh-keys

Примечание.

Замените значения myResourceGroup, vmName и imageCIURN соответствующим образом. Убедитесь, что выбран образ с помощью Cloud-init.

Подключитесь по протоколу SSH к общедоступному IP-адресу виртуальной машины, который указан в выходных данных предыдущей команды. Введите собственный пользователь и publicIpAddress следующим образом:

ssh <user>@<publicIpAddress>

Запустите средство управления пакетами и проверьте наличие обновлений:

  • Выполните следующую команду, чтобы подтвердить отсутствие ожидающих обновлений
sudo yum check-update

После того как cloud-init проверит и установит обновления в процессе загрузки, больше доступных для установки обновлений не должно оставаться.

  • Вы можете просмотреть процесс обновления, количество измененных пакетов и установку httpd , выполнив следующую команду и просмотрите выходные данные.
sudo yum history
ID     | Command line                                | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------------
     3 | -y install httpd                            | 2022-02-18 18:30 | Install        |    7
     2 | -y upgrade                                  | 2022-02-18 18:23 | I, O, U        |  321 EE
     1 |                                             | 2021-02-04 19:20 | Install        |  496 EE

Следующие шаги

Дополнительные примеры изменения конфигурации с помощью cloud-init см. в следующих статьях: