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.
G# is a magic note. It takes the vanilla, banal, bland sound of a major scale and makes it into music. Here’s how.
One of the main reasons for a strategy of “go virtual first” is the ease of checkpointing and restoring key pieces of infrastructure. When running a PXE provisioning system, the PXE server itslef is a piece of key infrastructure, and thus is a viable candidate for running in a Virtual Machine. How did I set up the network to make that possible? macvtap.
The Workstation on top of my server rack has 3 Ethernet ports. One is built in to the mother board, and and two are on a card. I want to use these three ports for different purposes. How can I tell which is which internally? The answer lies in /sys/bus/pci/devices/.
OpenStack is Network intensive. The setup I had previously, based around a Juniper Router, did not have enough Ports to reflect a real OpenStack deployment. I decided to forgo GigE speeds and get an older Cicso Catalyst 2960-WS Switch. Here is the new setup.
I do this infrequently enough that I want to record a reminder how I do it:
sudo cp ~/Downloads/rhel-server-7.6-x86_64-kvm.qcow2 /var/lib/libvirt/images/tower.qcow2 sudo virt-install --vcpus=2 --name tower --ram 4096 --import --disk /var/lib/libvirt/images/tower.qcow2
Not all of my virtual machines run on OpenStack; I have to run a fair number of virtual machines on my personal workstation via libvirt. However, I like using the cloud versions of RHEL, as they most closely match what I do run in OpenStack. The disconnect is that the Cloud images are designed to accept cloud-init, which pulls the ssh public keys from a metadata web server. Without that, there are no public keys added to the cloud-user account, and the VM is unaccessable. Here is how I add the ssh keys manually.