Перейти к содержанию

▍Cloud-init

Настройка базового образа с помощью Cloud-init

Cloud-init - это инструмент с открытым исходным кодом, используемый для инициализации и настройки виртуальных машин в облачных средах, позволяющий автоматически предоставлять настройки виртуальных машин.

Так как пакет qemu-guest-agent не был включен в облачный инициализирующий образ доустановим его инструметом virt-customize, который поставляется в пакете libguestfs-tools (libguestfs - это набор инструментов для доступа к образам дисков виртуальной машины (VM) и их модификации – https://www.libguestfs.org/), и позволяет устанавливать пакеты непосредственно в образ.

sudo apt update -y && sudo apt install libguestfs-tools -y

Перейдём в директорию, где загружен образ и доустановим пакет qemu-guest-agent внутрь образа:

┌─( [email protected] ) - ( 17 files, 21G ) - ( /mnt/pve/cephfs/template/iso )
└─> virt-customize -a lunar-server-cloudimg-amd64.img --install qemu-guest-agent
[   0.0] Examining the guest ...
[   5.2] Setting a random seed
virt-customize: warning: random seed could not be set for this type of 
guest
[   5.3] Setting the machine ID in /etc/machine-id
[   5.3] Installing packages: qemu-guest-agent
[  31.1] Finishing off

Создадим скрипт cloud.sh, который автоматизирует создание шаблона для Proxmox:

nano /root/bin/cloud.sh
#!/bin/bash

export IMAGES_PATH="/mnt/pve/cephfs/template/iso" # defines the path where the images will be stored and change the path to it.

cd ${IMAGES_PATH}

## Ubuntu 23.04 Lunar Lobster
## https://cloud-images.ubuntu.com/
# wget https://cloud-images.ubuntu.com/lunar/current/lunar-server-cloudimg-amd64.img

export QEMU_CPU_MODEL="host" # Specifies the CPU model to be used for the VM according your environment and the desired CPU capabilities.
export VM_CPU_SOCKETS=1
export VM_CPU_CORES=2
export VM_MEMORY=4098
export VM_STORAGE="cephpool01" # Assigns the VM to a specific resource pool for management.

export CLOUD_INIT_USER="root" # Specifies the username to be created using Cloud-init.
export CLOUD_INIT_SSHKEY="/root/.ssh/id_rsa.pub" # Provides the path to the SSH public key for the user.
export CLOUD_INIT_IP="dhcp"
export CLOUD_INIT_NAMESERVER="192.168.0.200"
export CLOUD_INIT_SEARCHDOMAIN="home.lab"

export TEMPLATE_ID=9000
export VM_NAME="ubuntu23.04"
export VM_DISK_IMAGE="${IMAGES_PATH}/lunar-server-cloudimg-amd64.img"

####

# Create VM. Change the cpu model
qm create ${TEMPLATE_ID} --name ${VM_NAME} --cpu ${QEMU_CPU_MODEL} --sockets ${VM_CPU_SOCKETS} --cores ${VM_CPU_CORES} --memory ${VM_MEMORY} --numa 1 --net0 virtio,bridge=vmbr0 --ostype l26 -machine q35 --agent 1 --scsihw virtio-scsi-single

# Start at boot
qm set ${TEMPLATE_ID} -onboot 1

# Import Disk
qm set ${TEMPLATE_ID} --scsi0 ${VM_STORAGE}:0,import-from=${VM_DISK_IMAGE}

# Add Cloud-Init CD-ROM drive. This enables the VM to receive customization instructions during boot.
qm set ${TEMPLATE_ID} --ide2 ${VM_STORAGE}:cloudinit --boot order=scsi0

# Cloud-init network-data
qm set ${TEMPLATE_ID} --ipconfig0 ip=${CLOUD_INIT_IP} --nameserver ${CLOUD_INIT_NAMESERVER} --searchdomain ${CLOUD_INIT_SEARCHDOMAIN}

# Cloud-init user-data
qm set ${TEMPLATE_ID} --ciupgrade 1 --ciuser ${CLOUD_INIT_USER} --sshkeys ${CLOUD_INIT_SSHKEY}

#Resize the disk to 50G
qm disk resize ${TEMPLATE_ID} scsi0 50G

# Cloud-init regenerate ISO image, ensuring that the VM will properly initialize with the desired parameters.
qm cloudinit update ${TEMPLATE_ID}

#####

qm set ${TEMPLATE_ID} --name "${VM_NAME}-Template"

qm template ${TEMPLATE_ID}

Запускаем:

┌─( [email protected] ) - ( 17 files, 21G ) - ( /mnt/pve/cephfs/template/iso )
└─> cloud.sh 
update VM 9000: -scsi0 cephpool01:0,import-from=/mnt/pve/cephfs/template/iso/lunar-server-cloudimg-amd64.img
transferred 0.0 B of 3.5 GiB (0.00%)
transferred 35.8 MiB of 3.5 GiB (1.00%)
transferred 71.7 MiB of 3.5 GiB (2.00%)
transferred 107.5 MiB of 3.5 GiB (3.00%)
transferred 143.7 MiB of 3.5 GiB (4.01%)
transferred 182.4 MiB of 3.5 GiB (5.09%)
transferred 220.1 MiB of 3.5 GiB (6.14%)
transferred 257.0 MiB of 3.5 GiB (7.17%)
transferred 293.2 MiB of 3.5 GiB (8.18%)
transferred 329.0 MiB of 3.5 GiB (9.18%)
transferred 364.9 MiB of 3.5 GiB (10.18%)
transferred 400.7 MiB of 3.5 GiB (11.18%)
transferred 436.5 MiB of 3.5 GiB (12.18%)
transferred 472.4 MiB of 3.5 GiB (13.18%)
transferred 508.2 MiB of 3.5 GiB (14.18%)
transferred 544.4 MiB of 3.5 GiB (15.19%)
transferred 580.2 MiB of 3.5 GiB (16.19%)
transferred 616.1 MiB of 3.5 GiB (17.19%)
transferred 651.9 MiB of 3.5 GiB (18.19%)
transferred 687.8 MiB of 3.5 GiB (19.19%)
transferred 723.6 MiB of 3.5 GiB (20.19%)
transferred 759.4 MiB of 3.5 GiB (21.19%)
transferred 795.6 MiB of 3.5 GiB (22.20%)
transferred 831.5 MiB of 3.5 GiB (23.20%)
transferred 867.3 MiB of 3.5 GiB (24.20%)
transferred 903.2 MiB of 3.5 GiB (25.20%)
transferred 939.0 MiB of 3.5 GiB (26.20%)
transferred 974.8 MiB of 3.5 GiB (27.20%)
transferred 1010.7 MiB of 3.5 GiB (28.20%)
transferred 1.0 GiB of 3.5 GiB (29.21%)
transferred 1.1 GiB of 3.5 GiB (30.21%)
transferred 1.1 GiB of 3.5 GiB (31.21%)
transferred 1.1 GiB of 3.5 GiB (32.21%)
transferred 1.2 GiB of 3.5 GiB (33.21%)
transferred 1.2 GiB of 3.5 GiB (34.21%)
transferred 1.2 GiB of 3.5 GiB (35.21%)
transferred 1.3 GiB of 3.5 GiB (36.22%)
transferred 1.3 GiB of 3.5 GiB (37.22%)
transferred 1.3 GiB of 3.5 GiB (38.22%)
transferred 1.4 GiB of 3.5 GiB (39.22%)
transferred 1.4 GiB of 3.5 GiB (40.22%)
transferred 1.4 GiB of 3.5 GiB (41.22%)
transferred 1.5 GiB of 3.5 GiB (42.22%)
transferred 1.5 GiB of 3.5 GiB (43.23%)
transferred 1.5 GiB of 3.5 GiB (44.23%)
transferred 1.6 GiB of 3.5 GiB (45.23%)
transferred 1.6 GiB of 3.5 GiB (46.23%)
transferred 1.7 GiB of 3.5 GiB (47.23%)
transferred 1.7 GiB of 3.5 GiB (48.23%)
transferred 1.7 GiB of 3.5 GiB (49.23%)
transferred 1.8 GiB of 3.5 GiB (50.24%)
transferred 1.8 GiB of 3.5 GiB (51.24%)
transferred 1.8 GiB of 3.5 GiB (52.24%)
transferred 1.9 GiB of 3.5 GiB (53.24%)
transferred 1.9 GiB of 3.5 GiB (54.24%)
transferred 1.9 GiB of 3.5 GiB (55.24%)
transferred 2.0 GiB of 3.5 GiB (56.24%)
transferred 2.0 GiB of 3.5 GiB (57.25%)
transferred 2.0 GiB of 3.5 GiB (58.25%)
transferred 2.1 GiB of 3.5 GiB (59.25%)
transferred 2.1 GiB of 3.5 GiB (60.25%)
transferred 2.1 GiB of 3.5 GiB (61.25%)
transferred 2.2 GiB of 3.5 GiB (62.25%)
transferred 2.2 GiB of 3.5 GiB (63.25%)
transferred 2.2 GiB of 3.5 GiB (64.26%)
transferred 2.3 GiB of 3.5 GiB (65.26%)
transferred 2.3 GiB of 3.5 GiB (66.26%)
transferred 2.4 GiB of 3.5 GiB (67.26%)
transferred 2.4 GiB of 3.5 GiB (68.29%)
transferred 2.4 GiB of 3.5 GiB (69.29%)
transferred 2.5 GiB of 3.5 GiB (70.38%)
transferred 2.5 GiB of 3.5 GiB (71.48%)
transferred 2.5 GiB of 3.5 GiB (72.53%)
transferred 2.6 GiB of 3.5 GiB (73.55%)
transferred 2.6 GiB of 3.5 GiB (74.59%)
transferred 2.6 GiB of 3.5 GiB (75.65%)
transferred 2.7 GiB of 3.5 GiB (76.70%)
transferred 2.7 GiB of 3.5 GiB (77.70%)
transferred 2.8 GiB of 3.5 GiB (78.70%)
transferred 2.8 GiB of 3.5 GiB (79.70%)
transferred 2.8 GiB of 3.5 GiB (80.80%)
transferred 2.9 GiB of 3.5 GiB (81.84%)
transferred 2.9 GiB of 3.5 GiB (82.84%)
transferred 2.9 GiB of 3.5 GiB (83.90%)
transferred 3.0 GiB of 3.5 GiB (84.94%)
transferred 3.0 GiB of 3.5 GiB (85.97%)
transferred 3.0 GiB of 3.5 GiB (87.00%)
transferred 3.1 GiB of 3.5 GiB (88.01%)
transferred 3.1 GiB of 3.5 GiB (89.05%)
transferred 3.2 GiB of 3.5 GiB (90.07%)
transferred 3.2 GiB of 3.5 GiB (91.17%)
transferred 3.2 GiB of 3.5 GiB (92.19%)
transferred 3.3 GiB of 3.5 GiB (93.24%)
transferred 3.3 GiB of 3.5 GiB (94.32%)
transferred 3.3 GiB of 3.5 GiB (95.37%)
transferred 3.4 GiB of 3.5 GiB (96.37%)
transferred 3.4 GiB of 3.5 GiB (97.47%)
transferred 3.4 GiB of 3.5 GiB (98.52%)
transferred 3.5 GiB of 3.5 GiB (99.55%)
transferred 3.5 GiB of 3.5 GiB (100.00%)
transferred 3.5 GiB of 3.5 GiB (100.00%)
scsi0: successfully created disk 'cephpool01:vm-9000-disk-0,size=3584M'
update VM 9000: -boot order=scsi0 -ide2 cephpool01:cloudinit
ide2: successfully created disk 'cephpool01:vm-9000-cloudinit,media=cdrom'
generating cloud-init ISO
update VM 9000: -ipconfig0 ip=dhcp -nameserver 192.168.0.200 -searchdomain home.lab
update VM 9000: -ciupgrade 1 -ciuser root -sshkeys ssh-rsa%20AAAAEAAAADAQABAAABgQC1eCblNaKSVKJNu61GsRw0HQqLANtiXXZRLr4vb5a1poME7yQ1fnnwtid4208j+lNW0sNLVljrXNGrdI3TBstroGv8pYbEdcUrp7u+Lsq4u9+nFVEnY6sgWPfmJmiu9jYdygkS9xenVuOEraAhF1egg7vzCd1+f34BpY5dNHjUnTyHzSxr8EuY66s1b/shapfM3h6mlJmO6usZxVe5U9IbzpCoHs5dcEaaCs9+2eFG6WN5h%20root%40srv-pve1%0A
generating cloud-init ISO
update VM 9000: -name ubuntu23.04-Template
Creating snap: 10% complete...
Creating snap: 100% complete...done.

Готово!

К началу