Set up and configure single-node OpenStack on Ubuntu 18.04

Want to easily install single-node OpenStack on Ubuntu? With the Lenovo project, you can easily and automatically install complex software stacks. This will shift you from having no large software skills to using it without having to learn how to deploy it. We have another article on how to set up OpenStack on Ubuntu using DevStack. If you need an alternative solution, check it out.

A list of changeable spells that can be used Registry. Some popular spells that can be installed by summoning include:

  • Kubernetes – microk8s, deceptive kubernetes
  • OpenStack
  • Big data – hadoop
  • and many more

My computer specifications

  • RAM: 16 GB
  • Disk: 512 GB (SSD)
  • CPU: 8 cores
  • operating system: Ubuntu 18.04

Step 1: Update Ubuntu:

Update your Ubuntu computer.

$ sudo apt update
$ sudo apt -y upgrade
[sudo] password for jkmutai: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done

If not actively used, you can choose to reboot your computer after the upgrade:

sudo reboot

Step 2: Install the variant

conjure-up can be used as a snapshot on Ubuntu.

$ sudo apt install snapd
$ sudo snap install conjure-up --classic
conjure-up 2.6.10-20191109.1611 from Canonical✓ installed

Step 3: Install LXD on Ubuntu

The concept requires that the minimum version of LXD is 3.0.0. Before using variants, we need to install and configure LXD. You can follow LXD settings document.

Install LXD:

$ sudo snap install lxd
lxd 3.18 from Canonical✓ installed

Your $ USER Need to be x Group to access LXD services. Add yours $ USER Do the following for the lxd group:

sudo usermod -a -G lxd $USER
newgrp lxd

Initialize LXD by running the following command:

/snap/bin/lxd init

For most settings, the default value should be sufficient.

Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: 
Create a new ZFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=93GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

Confirm that the bridge is created.

$ ip ad
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: wlp6s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a4:c4:94:95:1b:45 brd ff:ff:ff:ff:ff:ff
    inet brd scope global dynamic noprefixroute wlp6s0
       valid_lft 85559sec preferred_lft 85559sec
    inet6 fe80::3851:679f:eafe:2553/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: lxdbr0:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 5a:e5:cb:27:5d:e8 brd ff:ff:ff:ff:ff:ff
    inet scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fd42:81d3:730a:7bdf::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::58e5:cbff:fe27:5de8/64 scope link 
       valid_lft forever preferred_lft forever

For localhost deployment, LXD must define a bridge:

lxc network set lxdbr0 ipv4.address=auto ipv4.nat=true ipv6.address=none ipv6.nat=false

Confirm that IPv6 is disabled:

$ lxc network show lxdbr0
  ipv4.nat: "true"
  ipv6.address: none
  ipv6.nat: "false"
description: ""
name: lxdbr0
type: bridge
- /1.0/containers/juju-4569b7-0
- /1.0/containers/juju-4569b7-1
- /1.0/containers/juju-4569b7-2
- /1.0/containers/juju-4569b7-3
- /1.0/containers/juju-63515f-0
managed: true
status: Created
- none

For those who use a corporate proxy in their network, you need to configure LXD to use the proxy for external access.

lxc config set core.proxy_http 
lxc config set core.proxy_https 
lxc config set core.proxy_ignore_hosts 

Step 4: Install and configure OpenStack with LXD on Ubuntu

After installing LXD and pre-configuration, it’s time to install OpenStack on Ubuntu. Generate ssh key:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jkmutai/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/jkmutai/.ssh/id_rsa.
Your public key has been saved in /home/jkmutai/.ssh/
The key fingerprint is:
SHA256:02cZvM0AwvpQZji7Jnuccr6FOgci7LrgLaGj5e2SjEs [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|       o. .      |
|      o =. o     |
|       B    +    |
|      +  .   B   |
|.      +S . = o  |
|.o. o o... o     |
|+Eoo *...        |
|B==.+.*.         |
|B=o++Bo.         |

You can install single-node OpenStack on Ubuntu in an interactive session. Run the command. This will list you all the available spells:

$ conjure-up

select”OpenStack with NovaLXDSpelling in the dialog.

On the screen, select “local host“.

Set up and configure single-node OpenStack on Ubuntu 18.04

Select the LXD bridge for deployment.

Set up and configure single-node OpenStack on Ubuntu 18.04

Provide the path to the ssh public key to use when launching the OpenStack instance.

Set up and configure single-node OpenStack on Ubuntu 18.04

Compliant with OpenStack services being deployed and commissioned deploy.

Set up and configure single-node OpenStack on Ubuntu 18.04

Please be patient as it may take some time to complete the deployment on OpenStack on LXD. The Juju controller will first initialize and then control and perform other installation steps.

Set up and configure single-node OpenStack on Ubuntu 18.04

After successful installation, a screen similar to the following will be displayed.

Set up and configure single-node OpenStack on Ubuntu 18.04

Make a note of the Horizon URL and access credentials.

Set up and configure single-node OpenStack on Ubuntu 18.04

The default credentials are:

Username: admin 
Password: openstack

Delete deployment:

$ conjure-down

Uninstall Change itself:

sudo snap remove conjure-up

that’s it. I like to run OpenStack on Ubuntu. More guidelines for OpenStack management are shared below.

How to resize / expand Cinder in OpenStack

How to rename an instance / server in OpenStack

How to assign a floating IP address to an instance in OpenStack

How to create an OpenStack instance with a fixed / static IP address

How to create OpenStack projects, users and roles