Создание шаблона ВМ с cloud-init в Proxmox
Приветствую!

В этой заметке мы импортируем ранее подготовленный образ ОС в формате qcow2 в Proxmox в качестве шаблона ВМ, используя консольные команды QEMU.

Все примеры из статьи выполнялись в среде гипервизора Proxmox 9 (Debian 13).

1️⃣ Подключаемся к серверу Proxmox по SSH:

BASH
ssh root@proxmox.home.lan
Нажмите, чтобы развернуть и увидеть больше

2️⃣ Выполняем ресайз диска (укажите подходящее вам значение):

BASH
qemu-img resize ./debian-13-generic-amd64.qcow2 20G
Нажмите, чтобы развернуть и увидеть больше

3️⃣ Создаём новую виртуальную машину с любым именем, например debian13-k8s-template, ID, например 7777 и базовыми настройками (скорректируйте под ваши условия):

BASH
qm create 7777 --name "debian13-k8s-template" \
    --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
Нажмите, чтобы развернуть и увидеть больше

4️⃣ Импортируем образ диска debian-13-generic-amd64.qcow2 в хранилище storage (замените на своё) и добавляем его к ВМ с ID 7777:

BASH
qm importdisk 7777 ./debian-13-generic-amd64.qcow2 storage --format qcow2
Нажмите, чтобы развернуть и увидеть больше

5️⃣ Устанавливаем SCSI контроллер и добавляем импортированный диск как scsi0:

BASH
qm set 7777 --scsihw virtio-scsi-single \
    --scsi0 storage:7777/vm-7777-disk-0.qcow2
Нажмите, чтобы развернуть и увидеть больше

6️⃣ Устанавливаем порядок загрузки, указывая scsi0 как первый загрузочный диск:

BASH
qm set 7777 --boot order=scsi0
Нажмите, чтобы развернуть и увидеть больше

7️⃣ Добавляем cloud-init диск к виртуальной машине как ide0 (для автоматической настройки при первом запуске):

BASH
qm set 7777 --ide0 storage:cloudinit
Нажмите, чтобы развернуть и увидеть больше

8️⃣ Настраиваем пользователя, пароль и SSH для cloud-init:

BASH
# Создание пользователя
qm set 7777 --ciuser ivan
qm set 7777 --cipassword $(openssl passwd -6)

# Настройка IP
qm set 7777 --ipconfig0 ip=dhcp
# или статика
qm set 7777 --ipconfig0 ip=192.168.1.100/24,gw=192.168.1.1

# Добавление SSH ключа
qm set 7777 --sshkeys ~/.ssh/id_ed25519.pub
Нажмите, чтобы развернуть и увидеть больше

9️⃣ Настраиваем последовательный порт для консоли и видеокарту, связанную с ним:

BASH
qm set 7777 --serial0 socket --vga serial0
Нажмите, чтобы развернуть и увидеть больше

🔟 Включаем QEMU Guest Agent для взаимодействия между хостом и гостевой системой:

BASH
qm set 7777 --agent enabled=1
Нажмите, чтобы развернуть и увидеть больше

1️⃣1️⃣ Преобразуем виртуальную машину в шаблон (для клонирования и быстрого развертывания):

BASH
qm template 7777
Нажмите, чтобы развернуть и увидеть больше

1️⃣2️⃣ Пересканируем конфигурацию виртуальной машины (может быть полезно после внесения изменений):

BASH
qm rescan --vmid 7777
Нажмите, чтобы развернуть и увидеть больше

1️⃣3️⃣ Смотрим полную конфигурацию нашего шаблона виртуальной машины:

BASH
qm config 7777
Нажмите, чтобы развернуть и увидеть больше

1️⃣4️⃣ Проверяем список файлов в директории ВМ (хранилище storage), в моём случае это: /mnt/storage/images/7777/:

BASH
ls -l /mnt/storage/images/7777/
Нажмите, чтобы развернуть и увидеть больше

Видим сам образ и cloud-init диск👌.

1️⃣5️⃣ Теперь спокойно клонируйте ваш шаблон в новую виртуальную машину в Proxmox:

1️⃣6️⃣ После запуска проверяем доступ к консоли новой ВМ по паролю:

1️⃣7️⃣ Проверяем подключение по SSH ключу:

Всё работает!

В следующей статье мы будем автоматизировать развёртывание инфраструктуры в Proxmox с помощью Terraform/OpenTofu. Не пропустите👨‍💻.

Спасибо, что читаете! Успехов вам😉.

Авторские права

Автор: Иван Чёрный

Ссылка: https://r4ven.me/virtualization/sozdanie-shablona-vm-s-cloud-init-v-proxmox/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша