--- sidebar_position: 2 --- # Canonical OpenStack OpenStack is basically a virtual machine hypervisor that is HA and cluster-friendly. This particular variant is deployed via Canonical's MiniStack environment using SNAP. It will deploy OpenStack onto a single node, which can later be expanded to additional nodes. You can also use something like OpenShift to deploy a Kubernetes Cluster onto OpenStack automatically via its various APIs. **Reference Documentation**: - https://discourse.ubuntu.com/t/single-node-guided/35765 - https://microstack.run/docs/single-node-guided :::note Prerequisites This document assumes your bare-metal host server is running Ubuntu 22.04 LTS, has at least 16GB of Memory (**32GB for Multi-Node Deployments**), two network interfaces (one for management, one for remote VM access), 200GB of Disk Space for the root filesystem, another 200GB disk for Ceph distributed storage, and 4 processor cores. See [Single-Node Mode System Requirements](https://ubuntu.com/openstack/install) ::: :::note Assumed Networking on the First Cluster Node - **eth0** = 192.168.3.5 - **eth1** = 192.168.5.200 ::: ### Update APT then install upgrades ``` sudo apt update && sudo apt upgrade -y && sudo apt install htop ncdu iptables nano -y ``` :::tip At this time, it would be a good idea to take a checkpoint/snapshot of the server (if it is a virtual machine). This gives you a starting point to come back to as you troubleshoot inevitable deployment issues. ::: ### Update SNAP then install OpenStack SNAP ``` sudo snap refresh sudo snap install openstack --channel 2023.1 ``` ### Install & Configure Dependencies Sunbeam can generate a script to ensure that the machine has all of the required dependencies installed and is configured correctly for use in MicroStack. ``` sunbeam prepare-node-script | bash -x && newgrp snap_daemon sudo reboot ``` ### Bootstrapping Deploy the OpenStack cloud using the cluster bootstrap command. ``` sunbeam cluster bootstrap ``` :::caution If you get an "Unable to connect to websocket" error, run `sudo snap restart lxd`. [Known Bug Report](https://bugs.launchpad.net/snap-openstack/+bug/2033400) ::: :::note Bootstrap Variables: - Management networks shared by hosts = `192.168.3.0/24` - MetalLB address allocation range (supports multiple ranges, comma separated) (10.20.21.10-10.20.21.20): `192.168.3.50-192.168.3.60` ::: ### Cloud Initialization: - nicole@moon-stack-01:~$ `sunbeam configure --openrc demo-openrc` - Local or remote access to VMs [local/remote] (local): `remote` - CIDR of network to use for external networking (10.20.20.0/24): `192.168.5.0/24` - IP address of default gateway for external network (192.168.5.1): - Populate OpenStack cloud with demo user, default images, flavors etc [y/n] (y): - Username to use for access to OpenStack (demo): `nicole` - Password to use for access to OpenStack (Vb********): `` - Network range to use for project network (192.168.122.0/24): - List of nameservers guests should use for DNS resolution (192.168.3.11 192.168.3.10): - Enable ping and SSH access to instances? [y/n] (y): - Start of IP allocation range for external network (192.168.5.2): `192.168.5.201` - End of IP allocation range for external network (192.168.5.254): `192.168.5.251` - Network type for access to external network [flat/vlan] (flat): - Free network interface that will be configured for external traffic: `eth1` - WARNING: Interface eth1 is configured. Any configuration will be lost, are you sure you want to continue? [y/n]: y ### Pull Down / Generate the Dashboard URL ``` sunbeam openrc > admin-openrc sunbeam dashboard-url ``` ### Launch a Test VM: Verify the cloud by launching a VM called ‘test’ based on the ‘ubuntu’ image (Ubuntu 22.04 LTS). ``` sunbeam launch ubuntu --name test ``` :::note Sample output: Launching an OpenStack instance ... Access instance with `ssh -i /home/ubuntu/.config/openstack/sunbeam ubuntu@10.20.20.200` :::