Продолжаю эксперименты с виртуальными машинами на локальном гипервизоре 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. Материал написан по мотивам этого оригинала. Здесь же есть подготовительные этапы, если вы начинаете с нуля.
