Chapter 8. Preparing and deploying KVM guest images by using RHEL image builder
To create a purpose-built image for use on Red Hat Virtualization, you can use RHEL image builder to compose a KVM
guest image. The KVM guest images are only supported by rhel-guest-image
in Red Hat Virtualization.
When you create a disk image by using RHEL image builder, even if you specify your own partition layout, it creates the partitioning table in the GUID Partition Table (GPT) layout, with a dual-bootable image: BIOS mode or UEFI mode. It then creates a BIOS boot partition, along with the UEFI partition.
Working with a customized KVM guest image involves the following high-level steps:
-
Creating a KVM guest Image
.qcow2
image using RHEL image builder. - Creating a virtual machine from the KVM guest image.
8.1. Creating customized KVM guest images by using RHEL image builder
You can create a customized .qcow2
KVM guest image by using RHEL image builder.
Prerequisites
- You must have root or wheel group user access to the system.
-
The
cockpit-composer
package is installed. - On a RHEL system, you have opened the RHEL image builder dashboard of the web console.
- You have created a blueprint. See Creating a blueprint in the web console interface.
Procedure
- Click the blueprint name you created.
- Select the tab Images.
- Click Create Image to create your customized image. A pop-up window opens.
-
From the Type drop-down menu list, select
QEMU Image(.qcow2)
. - Set the size that you want the image to be when instantiated and click Create.
- A small pop-up on the upper right side of the window informs you that the image creation has been added to the queue. After the image creation process is complete, you can see the Image build complete status.
Verification
-
Click the breadcrumbs icon and select the Download option. RHEL image builder downloads the KVM guest image
.qcow2
file at your default download location.
Additional resources
8.2. Creating a virtual machine from a KVM guest image
With RHEL image builder, you can build a .qcow2
image, and use a KVM guest image to create a VM. The KVM guest images created using RHEL image builder already have cloud-init
installed and enabled.
Prerequisites
-
You created a
.qcow2
image by using RHEL image builder. See Creating a blueprint in the web console interface. -
The
qemu-kvm
package is installed on your system. You can check if the/dev/kvm
folder is available on your system. -
You have the
libvirt
andvirt-install
packages installed on your system. -
The
genisoimage
utility is installed on your system.
Procedure
-
Move the KVM Guest Image you created using RHEL image builder to the
/var/lib/libvirt/images
directory. Create a directory, for example,
cloudinitiso
and navigate to this newly created directory:$ mkdir cloudinitiso $ cd cloudinitiso
Create a file named
meta-data
. Add the following information to this file:instance-id: citest local-hostname: vmname
Create a file named
user-data
. Add the following information to the file:#cloud-config user: admin password: password chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== your.email@example.com
Where,
ssh_authorized_keys
is your SSH public key. You can find your SSH public key in~/.ssh/id_rsa.pub
.Use the
genisoimage
command to create an ISO image that includes theuser-data
andmeta-data
files.# genisoimage -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)
Create a new VM from the KVM Guest Image using the
virt-install
command. Include the ISO image you created on step 4 as an attachment to the VM image.# virt-install \ --memory 4096 \ --vcpus 4 \ --name myvm \ --disk rhel-9-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk cloud-init.iso,device=cdrom \ --os-variant rhel 9 \ --virt-type kvm \ --graphics none \ --import
Where,
- --graphics none - means it is a headless RHEL 9 VM.
- --vcpus 4 - means that it uses 4 virtual CPUs.
- --memory 4096 - means it uses 4096 MB RAM.
The VM installation starts:
Starting install... Connected to domain mytestcivm ... [ OK ] Started Execute cloud user/final scripts. [ OK ] Reached target Cloud-init target. Red Hat Enterprise Linux 9 (Ootpa) Kernel 4.18.0-221.el8.x86_64 on an x86_64
Verification
After the boot is complete, the VM shows a text login interface. To log in to the VM:
-
Enter
admin
as a username and press Enter. Enter
password
as password and press Enter.After the login authentication is complete, you have access to the VM using the CLI.