I want to call out a stellar article that told me exactly what I needed to do in order to use virt-install and cloud-init to launch a cloud-image. The only thing I have to add is the caveat that the #cloud-config comment at the top of the user-data file is required. The system will ignore the file if it does not start with that comment. This is the easiest way I know to launch a brand new VM.
Category Archives: Virtualization
XPath for libvirt external snapshop path
The following xmllint XPath query will pull out the name of the backing file for a VM named fedora-server-36 and an external snapshot named fedora-36-post-install,
virsh snapshot-dumpxml fedora-server-36 fedora-server-36-post-install | xmllint --xpath "string(//domainsnapshot/disks/disk[@snapshot='external']/source/@file)" -
The string function extracts the attribute value.
This value can be used in the process of using or deleting the snapshot.
Parsing libvirt xmldump using xpath
In a recent article, I saw yet another example of using grep to pull information out of xml, and then to manually look for a field. However, XML is structured, and with XPath, we can pull out exactly what we need.
virsh dumpxml fedora-server-36 | xmllint --xpath "//domain/devices/disk[@device='disk']" -
That will produce output like this:
<disk type="file" device="disk"> <driver name="qemu" type="qcow2" discard="unmap"/> <source file="/var/lib/libvirt/images/fedora-server-36.qcow2"/> <target dev="vda" bus="virtio"/> <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/> </disk>
Note that I did more in my XPath than required by the original article. I wanted to show an example of querying based on an attribute inside the selected node.
Update: Here is an example for what is done later in the article: pull the path out of the pool xml.
virsh pool-dumpxml default | xmllint --xpath "//pool/target/path/text()" - /var/lib/libvirt/images
Enabling Fedora 35 Virtualization on an Ampere based machine
I have a fresh install of Fedora 35 on a lab machine. I want to run a virtual machine on it. I have ssh access to the root account and a public key copied over.Continue reading
PXE Setup Part the First
PXE is conglomeration of tools used to get a new operating system onto a computer. It is based on two protocols: DHCP and TFPT. I used PXER a long time ago at Penguin and have always wanted to set it up for my home personal use. I’m doing that now for my lab. My goal is to first be able to provision virtual machines, and then to provision physical boxes. I need to do a full install of RHEL 7 and RHEL 8, which means I also need Kickstart to automate the install process. I had it working, but after rebooting the NUC it is running on it broke. Here’s my debugging.Continue reading
Remotely Provisioning a Virtual Machine using Ansible and Libvirt
Ansible exists to help automate the time consuming repeated tasks that technologist depend upon. One very common jobs is to create and tear down a virtual machine. While cloud technologies have made this possible to perform remotely, there are many times when I’ve needed to setup and tear down virtual machines on systems that were stand alone Linux servers. In this case, the main interfaces to the machine are ssh and libvirt. I recently worked through an Ansible role to setup and tear down an virtual machine via libvirt, and I’d like to walk through it, and record my reasons for some of the decisions I made.
Passwordless access to System libvirt on Fedora 28
I can connect to the system libvirtd on my system without password. I set this up some time ago, and forgot how, so figured I would document it.
Getting a Virtual Machine’s IP Address from virsh
Ten Years later, and I finally know how to get virsh to tell me the IP address for a VM.
SE Linux for CentOS Part 3
After the previous two days debugging, Simo Sorce suggested that I need to tell the OS to show all AVCs, some are hidden by default.
SE Linux for CentOS Continued
Trying to troubleshoot the issues from Yesterday’s SELinux errors.