Create a VM for the Controller

In this document, I show how to provition an Ubuntu 20.04.5 Server virtual machine instance for a CHI controller node. Make sure the VM gets at least 32GB RAM and 40GB storage with 8 CPUs.

  1. Install necessary packages and perform checks

    $ sudo apt install cpu-checker
    $ sudo apt update
    $ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst
    $ sudo adduser 'expeca' libvirt
    $ sudo adduser 'expeca' kvm
    $ virsh list --all
    $ sudo systemctl status libvirtd
    
  2. Download OS image

    $ cd /var/lib/libvirt/boot/
    $ sudo wget https://releases.ubuntu.com/focal/ubuntu-20.04.5-live-server-amd64.iso
  3. Create the network bridges

    Assume eno8303 interface is reserved for management purposes. Interfaces ens1f0 and ens1f1 will be used for Openstack's internal and public networks respectively. Therefore, 3 bridges are needed for a VM: ssh, private network, and public network. Replace the contents of /etc/netplan/00-installer-config.yaml with the following

    network:
      ethernets:
        eno8303:
          dhcp4: false
          dhcp6: false
        ens1f0:
          dhcp4: false
          dhcp6: false
        ens1f1:
          dhcp4: false
          dhcp6: false
      version: 2
    
      bridges:
        mgmt-br:
          interfaces: [eno8303]
          addresses: [10.10.2.3/16]
          gateway4: 10.10.1.1
          nameservers:
            search:
            - expeca
            addresses:
            - 10.10.1.1
        internal-br:
          interfaces: [ens1f0]
          addresses: [10.20.111.10/23]
        public-br:
          interfaces: [ens1f1]
          addresses: [10.0.87.10/24]

    and apply the configuration using sudo netplan generate && sudo netplan apply

  4. Install the virtual machine

    $ virt-install \
    --name edge-vm1 \
    --ram 32000 \
    --disk path=/var/lib/libvirt/images/vm1.img,size=40 \
    --vcpus 8 \
    --os-variant ubuntu20.04 \
    --network bridge=mgmt-br \
    --network bridge=public-br \
    --network bridge=internal-br \
    --graphics none \
    --console pty,target_type=serial \
    --location /var/lib/libvirt/boot/ubuntu-20.04.5-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
    --extra-args 'console=ttyS0,115200n8 serial'

    During installation

    partitioning: Use entire disk
    machine-name: edge-vm1
    username: expeca
    pass: expeca
    packages: install openssh-server

    If encountered [FAILED] Failed unmounting /cdrom. just press CTRL+C and continue.

    Once the VM is up and running, the mgmt network interface must be setup to enable ssh access.

  5. Configure the VM to autostart again after host reboot

    $ sudo virsh autostart <vm_name>
    
  • How to completely remove a VM

    $ virsh destroy <vm_name>
    $ virsh snapshot-delete <vm_name> <snapshot_name>
    $ virsh undefine <vm_name> --remove-all-storage
    $ sudo rm /var/lib/libvirt/images/vm1.img
  • How to take a snapshot

    $ virsh snapshot-create-as --domain edge-vm1 \
    --name "edge_controller_clean" \
    --description "Network interfaces ready to start chi-in-a-box"
  • How to revert back to a snapshot

    virsh snapshot-revert edge-vm1 edge_controller_clean
  • How to fix the VM's clock after reverting

    sudo hwclock --hctosys

Last updated