Продолжаю эксперименты с виртуальными машинами на локальном гипервизоре QEMU/KVM. На этот раз создаем сервер Ubuntu 20.04 для MailWizz с помощью облачного слепка.
В первую очередь берём последний облачный образ Ubuntu нужного нам релиза. Пусть это будет Ubuntu Server 22.04 LTS (Jammy Jellyfish). Качаем к себе из папки jammy-server-cloudimg-amd64-disk-kvm.img
. Название у него длинное, поэтому я его переименую в ubuntu-ema-src.img
и перенесу в папку, где хранятся остальные образы гостевых виртуальных машин — /var/lib/libvirt/images/
.
Затем создаем диск будущей машины — ubuntu-ema.qcow2
. Для экспериментов мне достаточно 20 Гб:
qemu-img create -F qcow2 -b /var/lib/libvirt/images/ubuntu-ema-src.img -f qcow2 /var/lib/libvirt/images/ubuntu-ema.qcow2 20G
Теперь готовимся к созданию конфигурационного диска.
Во-первых, создадим файл настороек сети ubuntu-ema-network.cfg
:
version: 2 ethernets: enp1s0: dhcp4: true dhcp6: false
У меня гостевые машины получают настройки по DHCP, они у меня за NAT. Фиксацию IP адреса за машиной я делаю через Virual Machine Manager, привязывая его к MAC-адресу гостя. Подробности далее, а пока создаем файл настроек пользователяubuntu-ema-user.cfg
:
#cloud-config hostname: ubuntu-ema manage_etc_hosts: true users: - name: vmadm sudo: ALL=(ALL) NOPASSWD:ALL groups: users, admin home: /home/vmadm shell: /bin/bash lock_passwd: false ssh_pwauth: true disable_root: false chpasswd: list: | vmadm:vmadmpass expire: false final_message: "The system is finally up, after $UPTIME seconds"
Здесь, соответсвенно, имя пользователя — vmadm, а пароль — vmadmpass. Обязательно придумайте свои.
Теперь непосредственно создаем диск настроек будущей виртуальной машины:
cloud-localds -v --network-config=ubuntu-ema-network.cfg /var/lib/libvirt/images/ubuntu-ema-seed.qcow2 ubuntu-ema-user.cfg
И, наконец, приступаем к созданию виртуальной машины:
virt-install \ --connect qemu:///system \ --virt-type kvm \ --name ubuntu-ema \ --ram 4096 \ --vcpus 2 \ --os-variant ubuntu20.04 \ --disk path=/var/lib/libvirt/images/ubuntu-ema.qcow2,device=disk \ --disk path=/var/lib/libvirt/images/ubuntu-ema-seed.qcow2,device=disk \ --network network=default,model=virtio,mac=52:54:00:68:a2:8d \ --graphics spice --video qxl --channel spicevmc \ --import \ --noautoconsole
MAC-адрес здесь произвольный и уникальный в рамках нашей экосистемы, но всегда начинается с «52:54:00:» в QEMU/KVM.
Когда система сообщит, что все создано, нам останется привязать конкретный IP-адрес к нашему новому MAC-адресу. Для этого в Virtual Machine Manager->Edit->Connection details->Virtual Netwroks->XML сначала останавливаем сеть, прописываем строчку <host mac=»52:54:00:68:a2:8d» name=»ubuntu-ema» ip=»192.168.122.62″/>:
<network connections="1"> <name>default</name> <uuid>d1a6181e-8c5d-43cd-b455-8551740869bf</uuid> <forward mode="nat"> <nat> <port start="1024" end="65535"/> </nat> </forward> <bridge name="virbr0" stp="on" delay="0"/> <mac address="52:54:00:33:44:24"/> <ip address="192.168.122.1" netmask="255.255.255.0"> <dhcp> <range start="192.168.122.100" end="192.168.122.254"/> <host mac="52:54:00:68:a2:8d" name="ubuntu-ema" ip="192.168.122.62"/> </dhcp> </ip> </network>
Чтобы изменения вступли в силу надо перегрузить гостевую виртуальную машину.
Теперь туда можно зайти по ssh:
ssh vmadm@192.168.122.62
и начинать эксперименты…
PS. Собрал все в скрипт ubuntu-ema-install.sh. Если кому хочется всё сделать быстро, архив лежит здесь. Не забудьте внести в него свои данные, положить в ту же папку облачный образ Ubuntu и запустить:
sh ubuntu-ema-install.sh
Только надо иметь в виду, что MAC-адрес генерирутся автоматически, поэтому его надо подглядеть потом в свойствах созданной виртуальной машины и сделать привязку IP-адреса к нему.
PPS. Материал написан по мотивам этого оригинала. Здесь же есть подготовительные этапы, если вы начинаете с нуля.