Cloud-Init в Proxmox без боли: две команды и немного GUI
Привет всем! Многие кто использует Proxmox на своих серверах рано или поздно устают каждый раз вручную устанавливать операционную систему на новую ВМ. Решить эту проблему можно с помощью Cloud-Init. Для начала разберёмся, что такое Cloud-Init и чем он может быть полезен. Вот как принцип его работы описывается на сайте Canonical: Cloud images — это шаблоны операционных систем, и каждый экземпляр изначально представляет собой идентичный клон любого другого экземпляра. Именно пользовательские данные придают каждому облачному экземпляру индивидуальность, а Cloud-Init — это инструмент, который автоматически применяет эти данные к вашим экземплярам. Если говорить проще, Cloud-Init позволяет взять готовый image операционной системы и при первом запуске автоматически задать для виртуальной машины имя хоста, пользователя, SSH-ключи, сетевые настройки и другие параметры. Благодаря этому нам не придётся каждый раз устанавливать ОС вручную с ISO-образа. На мой взгляд, многие материалы на эту тему излишне усложняют процесс. Кроме того, пользователи, которые раньше не работали с QEMU напрямую, могут запутаться в некоторых моментах. Поэтому в этой статье я покажу, как настроить Cloud-Init в Proxmox с минимальным количеством действий в командной строке, используя графический интерфейс везде, где это возможно. Для примера я оставлю ссылки на официальные cloud-image Debian и AlmaLinux. Однако вы можете использовать любой другой дистрибутив на ваш вкус, который распространяется в формате QCOW2 и поддерживает Cloud-Init. Во всех дальнейших примерах я буду использовать Debian 13 (Trixie). Debian: https://cloud.debian.org/images/cloud/ AlmaLinux: https://repo.almalinux.org/almalinux/10/cloud/x8664v2/images/ После того как вы определились с дистрибутивом, его необходимо скачать на хост Proxmox через утилиту wget. Я предпочитаю хранить такие image в каталоге /var/lib/vz/images, чтобы они всегда были под рукой при создании новых шаблонов, вы же можете их хранить где вам удобно это никак не повлияет на дальнейшие действия. Теперь необходимо создать пустую виртуальную машину. В разделе «ОС» выберите пункт «Не использовать носитель», а в разделе «Диски» удалите автоматически созданный виртуальный диск, так как вместо него мы будем использовать скачанный cloud-image. Остальные параметры вы можете выбрать на своё усмотрение. Поскольку в дальнейшем эта виртуальная машина станет шаблоном для создания клонов, я обычно указываю минимальное количество ресурсов.При создании новой виртуальной машины их всегда можно будет изменить из GUI. Важно! Не включайте опцию «Запустить после создания». Сначала мы импортируем cloud-image и завершим настройку виртуальной машины, и только после этого её можно будет запускать. После создания у вас должна получиться примерно такая конфигурация пустой виртуальной машины(важен пункт ide2 и и отсутствие основного диска scsi0 именно вместо него будет использован cloud-image). Обратите внимание на id вашей ВМ он нам еще понадобится для дальнейших действий. Сразу удалим пустой CD-ROM, который был создан вместе с виртуальной машиной(удалите пункт который указан на скриншоте) Теперь мы можем импортировать наш cloud image в виде диска в нашу виртуальную машину для этого используем на хосте Proxmox Где: 105 - ID вашей виртуальной машины; debian-13-genericcloud-amd64.qcow2 - скачанный cloud-image; local - хранилище Proxmox, куда будет импортирован виртуальный диск. Далее включим последовательную консоль Теперь снова переходим в веб-интерфейс Proxmox. Во вкладке «Оборудование» добавляем «Диск CloudInit». Если у вас стандартная схема хранилищ с local и local-lvm, я рекомендую разместить Cloud-Init-диск на local в формате Qemu. При создании клонов вы всё равно сможете выбрать другое хранилище для основного диска, например local-lvm. В разделе «Оборудование» выберите «Неиспользуемый диск», нажмите «Добавить» и при необходимости измените параметры подключения диска. Теперь настроим порядок загрузки виртуальной машины. В качестве первого устройства загрузки необходимо выбрать импортированный диск. Загрузку по сети (net) можно отключить. После этого перейдите во вкладку Cloud-Init и настройте параметры сети в разделе «Конфигурация IP». При необходимости здесь же можно сразу указать имя пользователя, SSH-ключи, DNS и другие параметры. На этом настройка виртуальной машины завершена. Теперь её можно преобразовать в шаблон и использовать для создания новых ВМ. При клонировании шаблона не забудьте указать пользователя, пароль, SSH ключ (если используете), а также при необходимости изменить сетевые параметры. Если эти настройки одинаковы для всех создаваемых виртуальных машин, их можно задать сразу в шаблоне. После этих достаточно простых действий можно создавать ВМ за пару кликов в GUI редактируя по необходимости параметры Cloud-Init и ресурсов ВМ. Такой подход по удобству и скорости развёртывания максимально приближается к работе c LXC-контейнерами но при этом сохраняя преимущества ВМ. Спасибо за прочтение статьи, надеюсь это вам поможет ускорить работу с вашим Proxmox сервером и окажется полезно, если остались вопросы или вы заметели ошибку напишите мне на почту или Telegram контакты есть на главной странице