OpenStack in a snap!
Go to file
Billy Olsen ef771d3087 Fix aarch64/arm64 support for MicroStack
Fix the builds for MicroStack on aarch64/arm64. To resolve the build
issues, the SNAP_ARCH and SNAP_ARCH_TRIPLET variables need to be used
in appropriate places to reference the underlying platform rather than
the x86_64 platform.

Arm64/Aarch64 support requires that EFI support is enabled, which
involves adding the EFI packages for arm64. These are also included for
x86_64 for ensuring consistency in EFI support between the
architectures. The /usr/share/{OVMF,AAVMF} paths need to be bind-mounted
to the appropriate locations to avoid having to custom build the
packages within the snap.

The setup sequence also needs to consider loading the right image into
glance. This is done by using the platform to determine which cirros
image to import into glance. A new cirros image was not included in this
patch for aarch64 platform in order to keep the snap image size lower.
The setup sequence has fallback code to attempt to download the image if
it is unavailable in the filesystem.

Finally, the snapcraft architectures for building microstack are limited
to the x86_64 and arm64 platforms. There's no need to build on s390x or
other architectures at this point.

Additionally, bump the timeouts in osci.yaml as the new architecture
support unfortunately adds build time.

Closes-Bug: #1821872

Change-Id: I26625621fb9895027139ecb895e882e60f2e6502
2021-05-07 06:32:18 -07:00
checks Added Filebeat, NRPE and Telegraf to Microstack 2020-02-11 14:33:26 +00:00
patches Use focal/core20/Ussuri/OVN & enable confinement 2020-09-25 13:20:12 +00:00
snap/hooks Drop glance-registry 2021-03-17 17:07:12 -04:00
snap-overlay Fix snapcraft build issues 2021-04-26 22:20:33 -07:00
snap-wrappers Skip hostname checks and drop IP-based ACLs 2020-11-09 13:30:41 +03:00
tests Move volume tests to experimental pipeline 2021-04-08 14:28:52 -07:00
tools Fix aarch64/arm64 support for MicroStack 2021-05-07 06:32:18 -07:00
.gitignore Strict confinement (devmode) 2020-03-05 09:31:15 +00:00
.gitreview Added automated testing via tox and zuul. 2019-07-24 08:04:38 +01:00
.zuul.yaml Migrate functional testing to third-parth CI 2021-01-15 14:08:02 +03:00
CONTRIBUTING.md Updated "Building MicroStack" section of CONTRIBUTING.md 2019-11-14 17:36:25 +00:00
DEMO.md Add Secure Clustering 2020-10-15 01:37:33 +03:00
README.md Add command to README for retrieving admin password 2020-12-03 16:44:31 +00:00
filebeat.pgp.key Added Filebeat, NRPE and Telegraf to Microstack 2020-02-11 14:33:26 +00:00
osci.yaml Fix aarch64/arm64 support for MicroStack 2021-05-07 06:32:18 -07:00
snapcraft.yaml Fix aarch64/arm64 support for MicroStack 2021-05-07 06:32:18 -07:00
telegraf.pgp.key Added Filebeat, NRPE and Telegraf to Microstack 2020-02-11 14:33:26 +00:00
test-requirements.txt Rework the test framework & the clustering test 2021-01-15 15:58:03 +03:00
tox.ini Move volume tests to experimental pipeline 2021-04-08 14:28:52 -07:00

README.md

MicroStack

Snap Status

MicroStack is a single-machine, snap-deployed OpenStack cloud.

Common purposes include:

  • Development and testing of OpenStack workloads
  • Continuous integration (CI)
  • IoT and appliances
  • Edge clouds (experimental)
  • Introducing new users to OpenStack

Currently provided OpenStack services are: Nova, Keystone, Glance, Horizon, and Neutron.

MicroStack is frequently updated to provide the latest stable updates of the most recent OpenStack release.

Requirements: You will need at least 2 CPUs, 8 GiB of memory, and 100 GiB of disk space.

See the full MicroStack documentation.

Installation

At this time you can install from the --beta or --edge snap channels:

sudo snap install microstack --classic --beta

The edge channel is moving toward a strictly confined snap. At this time, it must be installed in devmode:

sudo snap install microstack --devmode --edge

Initialisation

Initialisation will set up databases, networks, flavors, an SSH keypair, a CirrOS image, and open ICMP/SSH security groups:

sudo microstack.init --auto

OpenStack client

The OpenStack client is bundled as microstack.openstack. For example:

microstack.openstack network list
microstack.openstack flavor list
microstack.openstack keypair list
microstack.openstack image list
microstack.openstack security group rule list

Creating an instance

To create an instance (called "awesome") based on the CirrOS image:

microstack.launch cirros --name awesome

SSH to an instance

The launch output will show you how to connect to the instance. For the CirrOS image, the user account is 'cirros'.

ssh -i ~/.ssh/id_microstack cirros@<ip-address>

Horizon

The launch output will also provide information for the Horizon dashboard. The username is 'admin' and the password can be obtained in this way:

sudo snap get microstack config.credentials.keystone-password

Removing MicroStack

To remove MicroStack, run:

sudo microstack.remove --auto

This will clean up the Open vSwitch bridge device and uninstall MicroStack. If you remove MicroStack with the snap remove command instead, don't worry -- the Open vSwitch bridge will disappear the next time that you reboot your system.

Note that you can pass any arguments that you'd pass to the snap remove command to microstack.remove. To purge the snap, for example, run:

sudo microstack.remove --auto --purge

LMA stack

Filebeat, Telegraf and NRPE are bundled as the snap systemd services.

Customising and contributing

To customise services and settings, look in the .d directories under /var/snap/microstack/common/etc. You can add services with your package manager, or take a look at CONTRIBUTING.md and make a code based argument for adding a service to the default list.

Reporting a bug

Please report bugs to the MicroStack project on Launchpad.