MicroCloud 2.1.0 LTS has been released!

Introduction

The LXD team would like to announce the release of MicroCloud 2.1.0 LTS!

This is our first LTS release. It features support for deployment of clusters with a single member for testing and development, improved security posture, and more flexibility during the initialization process. MicroCloud 2.1 LTS relies on LXD 5.21, MicroCeph Squid, and MicroOVN 24.04 LTS versions.

As with all our other LTS releases, this one will be supported for 5 years (until June 2029) and will receive a number of bugfix and security point releases over that time. It is also covered under the Ubuntu Pro support subscription where it can be supported for up to 12 years.

Thank you to everyone who contributed to this release!

Watch a demo of the new deployment process:

https://www.youtube.com/watch?v=M0y0hQ16YuE

Release highlights

Single-member support

In its initial release, MicroCloud was HA only, requiring 3 cluster members to be fully functional. This release includes support for single-member deployments, allowing for easier testing and catering to a wider range of use cases. Note that high availability still requires a minimum of three members. Additional members can be easily added by running microcloud add.

Secure trust establishment mechanism

In its initial version, MicroCloud focused on offering a convenient and automated approach to bootstrap clusters. By controlling the entire process, MicroCloud could generate join tokens for each of the services and distribute them across the cluster members, allowing clustering without additional manual intervention. This kind of process relies on fully trusting the local area network (LAN) for the automated exchange of the tokens, which is not possible in regulated environments.

In this release, we have improved the process with proactive tasks that have to be executed on each cluster member individually to ensure integrity before starting the join procedure. Now, all members of a MicroCloud need to explicitly establish trust among themselves. Each securely joins the cluster by verifying its peers without transferring critical information like API secrets across the network. The single microcloud init command still initiates the process, but a second microcloud join command is now required on the joining members. After the trust is established, the initialization process proceeds as before.

Additional options in microcloud init

Ability to specify dedicated network interfaces for Ceph traffic

The initialization process now includes the ability to designate specific network interfaces for Ceph traffic (both internal and public). For example, it allows users to designate network interfaces that are tailored for high throughput and low latency data transfer for internal traffic, improving performance.

When running microcloud init, you are now asked if you want to provide custom subnets for the Ceph cluster. Here are the questions you will be asked:

What subnet (either IPv4 or IPv6 CIDR notation) would you like your Ceph internal traffic on? [default: 203.0.113.0/24]: <answer>

What subnet (either IPv4 or IPv6 CIDR notation) would you like your Ceph public traffic on? [default: 230.0.113.0/24]: <answer>

You can choose to skip both questions (just hit Enter) and use the default value, which is the subnet used for the internal MicroCloud traffic.

Ability to encrypt Ceph disks

The initialization process now includes the ability to encrypt Ceph disks. Encrypting a disk will store the encryption keys in the Ceph key ring inside the Ceph configuration folder.

You will be asked the following question:

Do you want to encrypt the selected disks? (yes/no) [default=no]: <answer>

Note: Encryption requires a kernel with dm_crypt enabled. To check if the module exists, run:

sudo modinfo dm-crypt

To make use of this feature, the snap dm-crypt plug has to be connected, and microceph.daemon subsequently restarted:

sudo snap connect microceph:dm-crypt
sudo snap restart microceph.daemon

Ability to set up Ceph FS

The initialization process now includes the ability to set up a CephFS distributed filesystem.

You will be asked the following question:

Would you like to set up CephFS remote storage? (yes/no) [default=yes]: <answer>

Ability to specify OVN underlay network

The initialization process now includes the ability to designate specific network interfaces for the OVN underlay network. You must have at least one unused network interface per cluster member with an IP address. This reduces congestion and provides predictable latency and bandwidth characteristics, which are crucial for the performance of latency-sensitive applications running over the OVN overlay. A dedicated underlay can be designed to scale independently of other networks, which allows for more efficient scaling of the overlay network as the demand for virtual network resources increases.

You will be asked the following question:

Configure dedicated underlay networking? (yes/no) [default=no]: <answer>

A list of available network interfaces with an IP address will be displayed. You can then select one network interface per cluster member to be used as the interfaces for the underlay network of OVN.

microcloud status

To allow our users to check the state of their MicroCloud in an easy way we added a new microcloud status command. This will give you the status of your cluster, and show helpful messages if there is something wrong with any of the three services.

MicroCeph Squid

Included in the MicroCloud LTS is MicroCeph, which is based on the upstream Squid (v19.2.0) release. The Squid release brings performance optimizations to BlueStore (Ceph’s storage backend), as well as usability improvements for CephFS. The User Accounts feature improves self-service user management with new AWS-compatible IAM APIs for S3 object storage provided by RGW.

More details are available in the Ceph release notes.

MicroOVN 24.03

The new release is based on the upstream OVN 24.03 LTS and OVS 3.3 LTS versions, bringing an improved upgrade experience and increased performance. Service Control is a new feature that allows you to influence the services that run on each node.

Upgrading to the new version

We recommend that all current users upgrade to the LTS version so that they can benefit from the long term support. The previous version, MicroCloud 1.1 will be supported only until April 2025. More information about the upgrade procedure is available in our documentation here.

Default track change

The default snap track up until now has been latest. So when doing snap install microcloud you would be placed on the latest/stable feature release channel.

With the 2.1.0 LTS release the default snap track will be changed to the latest LTS release, which is now 2.1.0, and so doing snap install microcloud will place you onto the 2/stable channel.

In the future, we will be closing down the latest/stable track, and instead have specific release series tracks corresponding to the relevant release cycle (e.g 2/stable, 3/stable).

Full changelog

Full commit list
  • go: Update dependencies
  • make: Pin down MicroCeph and MicroOVN dependencies
  • test/suites/upgrade: Pin down dependencies
  • github: Pin down dependencies
  • doc: Pin down dependencies
  • doc: Add new LTS release video with latest commands
  • doc: Remove legacy video with old commands
  • doc/howto/install: add pre-deployment requirements
  • doc/tutorial: Remove redundant device ‘name’ property
  • doc: update intersphinx config to use microceph latest branch
  • doc: move initialise docs higher up nav menu/toctree
  • doc/howto: fix broken link to microceph docs
  • build(deps): bump golang.org/x/net from 0.30.0 to 0.31.0
  • build(deps): bump golang.org/x/sync from 0.8.0 to 0.9.0
  • service: Update address in Start hook
  • cmd/microcloudd: Set initialized address in bootstrap/join hooks
  • service: Move daemon args to CLI package
  • cmd/microcloud: Add service handler setter/getters
  • github: Scan the proper channels
  • github: SHA1 pinning on actions
  • build(deps): bump golang.org/x/mod from 0.21.0 to 0.22.0
  • api: Set proper address and name in status respose
  • build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0
  • multicast/discovery: Avoid leaking the context in tests (govet)
  • api: Check for unix socket existence in proxy handlers
  • test/includes: Handle failed joiner exit code
  • cmd/microcloud: Remove status.Ready checks
  • service: Remove LXD restart helper
  • cmd/microcloud: Check service initialized status
  • cmd/microcloud: Add helper to check all services’ initialization
  • service: Add IsInitialized to services
  • Update README
  • doc/images: Add MicroCloud logos
  • github: Checkout repo to identify changes on main branch
  • github: Don’t run system tests for doc only changes
  • github: Use same naming for docs tests
  • doc: Add new MicroCloud logos in the reference page
  • README: Fix duplicate MicroCloud
  • doc/tutorial: Explicitly require LXD 5.21
  • doc: Add minimal preseed examples
  • doc: Add network requirement notes
  • github: Add MicroCeph quincy to squid upgrade tests
  • doc: Show required preseed fields
  • github: Shorten job names
  • github: Use cache in case Trivy DB download fails
  • go: Update dependencies
  • make: Pin LXD stable-5.21
  • doc/preseed: Add missing ceph public_network field in the preseed YAML file.
  • doc: Account for pre-installed LXD in the tutorial
  • staticcheck: Add configuration file to ignore check ST1005
  • github: Add tiobe tics job for system and unit test coverage
  • doc/tutorial: Fix tutorial CLI output
  • github: Refresh commits job from LXD’s
  • github: Add SECURITY.md for how to report security issues
  • Makefile: Add -cover go build step for coverage
  • github: Update LP trigger to detect v2-edge branch
  • version: Set the .0 patch number for the 2.1.0 LTS
  • cmd/microcloud: Add key-exchange feedback logs in preseed mode
  • cmd/microcloud: Clarify systems table prompt
  • cmd/microcloud: Omit ceph network log from preseed setup
  • cmd/microcloud: Fix OVN underlay summary spacing
  • cmd/microcloud: Fix non-HA disk summary spacing
  • test/suites: Use ubuntu-minimal-daily for instance tests
  • test/suites: Ensure ping is installed
  • cmd/microcloud: Create storage pools before networks
  • cmd/microcloud: Initialize LXD last
  • go: Update deps
  • cmd/microcloud: Remove encryptAllDisks field
  • cmd/microcloud: Remove wipeAllDisks field
  • version: Release MicroCloud 2.1 LTS
  • doc/how-to/support: Align the recommended snap channels
  • doc: Add update and upgrade instructions
  • test/includes/check: Update the snap channel check for LXD
  • test/includes/microcloud: Pre-fetch images and enable security.devlxd.images
  • test/includes/microcloud: Connect dm-crypt to MicroCeph on 24.04 onwards
  • Revert “test/includes/microcloud: install yq from deb now that we are on 24.04”
  • test/includes/microcloud: Add exception for LXD core address check
  • test/suites/upgrade: Add checks to upgrade from MicroCloud 1 to 2
  • cmd/microcloud: Report missing cluster members for uninitialized, but installed services
  • test/suites: Test shrinking to 1 node
  • test/suites: Fix incorrect checks in remove tests
  • doc/how-to: Add shrinking workarounds to docs
  • cmd/microcloud/ad: Remove redundant flag
  • cmd/microcloud/main_init: Remove redundant flags
  • build(deps): bump golang.org/x/net from 0.29.0 to 0.30.0
  • test/suites: Update tests
  • cmd/microcloud/input_test: Add check for fast table Update after Render
  • cmd/microcloud/selection_table: Wait until stdio is set in the go routine
  • test/suites: Update docs and tests
  • cmd/microcloud: Remove unused flag from preseed
  • cmd/microcloud/join: Remove unnecessary --wipe flag
  • cmd/microcloud/join: Remove unnecessary --auto flag
  • test/main: Add upgrade test
  • test/includes/microcloud: Add support to specify base OS
  • github: Extend matrix tests with snap and OS version
  • api: Lower pool replication size when removing systems
  • api: Restrict removing from a 2 node ceph cluster
  • cmd/microcloud: Wait for the local daemon to become ready
  • cmd/microcloud: Only update MicroCloud-managed OSD pools
  • service: Add constants for OSD pool names
  • cmd/microcloud: Ask to skip OVN setup earlier
  • cmd/microcloud: Add message when skipping local storage setup
  • cmd/microcloud: Check MicroCeph for API errors
  • service: Add the multicast discovery responder to the session
  • multicast: Add more tests to the multicast discovery suite
  • multicast: Add StopResponder func to allow waiting for a closed connection
  • cmd/microcloud: Use service type name instead of version
  • service: Use regex to determine ceph version
  • test/includes/microcloud: Remove unused var (ShellCheck)
  • github: Use LXD 5.21/edge on the runner
  • test/includes/microcloud: Remove trust from remote when cleaning up
  • github: Avoid running Trivy outside main branch
  • github: Use Trivy official install steps
  • github: Save cache again every run
  • test/includes/microcloud: Don’t use --accept-certificate when using token
  • README: Clarify commands for deployment
  • doc: rephrase as agreed on review
  • renovate: Move the file and disable
  • test: Add tests for Ceph public network
  • doc: Update documentation to add Ceph public network seggregation
  • mxd/microcloud: Send PublicNet info to MicroCeph
  • cmd/microcloud/preseed: Add Ceph public network preseed handling
  • cmd/microcloud/ask: Add public Ceph network question handling
  • test/suites: Check for expected errors
  • test/includes: Update debug binaries between tests
  • test: Use 5.21/edge for tests
  • test/includes: Check microcloud exit codes
  • docs: Update initialise.md
  • test: Use LXD 5.21/candidate in tests
  • service: Add daemon version unit tests
  • go: Update microcluster dependency
  • test/suites: Add version checking test
  • cmd/microcloud: Update utils for the new Services map
  • cmd/microcloud: Check versions with microcloud service commands
  • cmd/microcloud: Check versions with microcloud preseed
  • cmd/microcloud: Check versions with microcloud join
  • cmd/microcloud: Check versions with microcloud init
  • cmd/microcloud: Check versions with microcloud add
  • api: Validate version with join intent
  • api/types: Record version with Services
  • service: Add GetVersion to each Service
  • service: Add supported versions
  • api: Set context cancellation cause for lookup timeout
  • Revert “test/suites/basic: Use openvswitch bridge driver for IPv6 tests”
  • github: Disable br_netfilter in tests to allow proper multicast traffic forwarding
  • doc: Replace usage of mdns with multicast
  • service: Replace usage of mdns with multicast
  • service: Add new CloudMulticastPort used for discovery
  • cmd/microcloud: Replace usage of mdns with multicast
  • api: Don’t log session websocket close error if already closed
  • api: Replace usage of mdns with multicast
  • multicast: Add unit tests for discovery
  • multicast: Add package for discovery
  • mdns: Remove package
  • go: Remove mDNS dependency
  • cmd/microcloud: Make OSD limit message less dire
  • cmd/microcloud: Make all errors print in red
  • cmd/microcloud: Add no-color options
  • go: Update dependencies
  • cmd/microcloud: Add status warning tests
  • cmd/microcloud: Skip questions for the service list command
  • cmd/microcloud: Add status command
  • cmd/microcloudd: Add GET /1.0/status API
  • cmd/tui: Add tui package
  • cmd/microcloudd: Set minimum heartbeat value
  • test/includes/microcloud: install yq from deb now that we are on 24.04
  • cmd/microcloud/ask: update getTargetCephNetworks to return a public Ceph network
  • test/includes/microcloud: Clarify comments on the interactive join funcs
  • test/suites/basic: Use openvswitch bridge driver for IPv6 tests
  • cmd/microcloud: Always join the MicroCloud microcluster first
  • test/suites: Rework basic to work with explicit trust establishment
  • test/suites: Rework recover to work with explicit trust establishment
  • test/suites: Rework add to work with explicit trust establishment
  • test/suites: Rework preseed to work with explicit trust establishment
  • test/includes: Add capture_and_join
  • doc: Apply trust establishment changes to the init, add and preseed docs
  • cmd/microcloudd: Remove secret and mDNS from daemon
  • cmd/microcloud: Add initiating and joining session handlers for the CLI
  • cmd/microcloud/preseed: Update test
  • cmd/microcloud: Move preseed code into its own subcommand
  • cmd/microcloud: Add join subcommand
  • cmd/microcloud: Use session concept for add
  • cmd/microcloud: Use session concept for init
  • cmd/microcloud: Add ask utilities and replace secret in client calls
  • cmd/microcloud: Add join and preseed subcommands
  • service: Add session concept and remove service level mDNS
  • service: Remove secret
  • mdns: Lookup only a single system and increase the version number
  • client: Add new StartSession and JoinIntent client functions
  • client: Replace secret with HMAC
  • api/auth: Allow temporary trust store and HMAC authentication
  • api/services: Use the authHandlerMTLS func
  • client: Add the WebsocketGateway
  • service: Add session concept
  • api/session: Add session API endpoints
  • service: Add EFF wordlist
  • go: Use latest dependencies
  • github: Add Trivy snap scanning
  • github: Add Trivy repo scanning
  • test/recover: Wait less for member role updates
  • cmd/microcloudd: Add --heartbeat flag
  • service/microcloud: Allow configuring CloudService dqlite heartbeat interval
  • cmd/microcloud: Update comment for address changes
  • Remove MicroOVN workaround in github runners
  • test/includes: Update SQL queries in test validators
  • test/includes: Install custom MicroCeph snaps
  • cmd/microcloud: Remove token add command
  • cmd/microcloud: Update CLI package to microcluster/v2
  • service: Update service package to microcluster/v2
  • doc/tutorial: fix comment in netplan snippet
  • client: Update client package to microcluster/v2
  • api: Update API package to microcluster/v2
  • go: Update dependencies
  • cmd/microcloud: Print warning if OVN underlay network is in Ceph cluster subnet
  • test/suites: Test preseed network keys
  • test/suites: Update preseed keys in tests
  • doc/how-to: Update preseed keys
  • cmd/microcloud: Fix OVN underlay detection in preseed
  • cmd/microcloud: Fix OSD count warning
  • doc/tutorial: permanently disable all IP addresses on microbr0’s parent
  • cmd/microcloud: Remove obsolete checks for autoSetup
  • test/suites/recover: Replace auto init
  • test/suites/basic: Remove auto test
  • test/suites/add: Remove auto test and replace auto init
  • test/includes/microcloud: Fix bug with killing too many processes
  • doc: Remove mentioning of --auto
  • cmd/microcloud: Remove --auto flag
  • tests: Add OVN underlay tests
  • doc: Add documentation for OVN underlay configuration
  • microcloud/cmd/microcloud: apply config for when a custom encaps Geneve IP is needed
  • microcloud/preseed: Allow the creation of an underlay network in preseed mode
  • cmd/microcloud/ask: Interactively configure a custom underlay network
  • service: Add OVNConfig to the JoinConfig
  • service: Implement new SupportsFeature function
  • service/lxd: Merge dedicated Ceph and OVN dedicated interfaces in one result
  • cmd/microcloud: Add OVNGeneveAddr system parameter
  • refactor: Update MicroOVN dep
  • test/suites: Don’t use FAN network in test suite
  • test/includes: Clean up microcloud_interactive logs
  • test: Properly run service-add tests
  • test/suites: Add single node & upgrade tests
  • test/suites: Add multi node question to interactive tests
  • cmd/microcloud: Update preseed unit tests
  • cmd/microcloud: Add single node support to preseed
  • cmd/microcloud: Skip lookup questions for single-node support
  • cmd/microcloud: Add single-node support question
  • test: Check lxd core.https_address
  • service/lxd: Set core.https_address on cluster join
  • test/suites: Add non-HA tests
  • cmd/microcloud: Verify explicit disk paths exist
  • test/suites: Rework combinations test
  • test/includes: Add ceph HA warning arg to tests
  • test/suites: Export combinations env vars
  • cmd/microcloud: Update preseed unit tests
  • cmd/microcloud: Handle default find_min
  • cmd/microcloud: Consider filtered disks for ceph networking
  • cmd/microcloud: Print warning if OSD hosts < 3 in preseed
  • cmd/microcloud: Remove multi-system constraints for preseed
  • cmd/microcloud: Update OSD pool replication factor on init & add
  • cmd/microcloud: Allow selecting fewer than 3 systems for MicroCeph with a warning
  • cmd/microcloud: Handle askRetry error
  • cmd/microcloud: Don’t ask dns question if uplink IPs not selected
  • test/suites: Add storage & network creation test
  • cmd/microcloud: Standardize ellipses
  • cmd/microcloud: Make setupCluster message bootstrap agnostic
  • cmd/microcloud: Ask profile update question before forming the cluster
  • cmd/microcloud: Add askUpdateProfile helper
  • cmd/microcloud: Remove bootstrap case from setupCluster
  • cmd/microcloud: Populate existing systems during preseed
  • cmd/microcloud: Populate existing member info for ‘add’
  • doc: update links to use relative instead of absolute links
  • doc: update links to documentation
  • doc/tutorial: add link to the LXD UI tutorial
  • doc/integration: add canonical URLs for the other doc sets
  • doc/integration: fix version handling
  • doc/integration: update the MicroOVN tag to the circle of friends
  • doc: update the index page with information about the doc integration
  • doc/integration: make the search bar pop up RTD search
  • doc/tests: make the doc tests use the custom Makefile
  • doc/integration: add targets for RTD and fix the build steps
  • mdns: Fix lint issue
  • test/suites: Dont reinstall snaps in the test suite
  • test/includes: Use pre-build microovn in tests
  • .github/workflows: Build MicroOVN with microcluster v1
  • doc/integration: update the doc build to integrate other doc sets
  • doc/Makefile: use doc/Makefile instead of doc/Makefile.sp
  • cmd/microcloud: Delete tokens on join failures
  • cmd/microcloud: Delete storage, networks, and volumes on join failure
  • service: Add DeleteToken helper to Services
  • doc/how-to: Add service add/list docs
  • test/suites: Update tests
  • cmd/microcloud: Add service list and service add
  • cmd/microcloud: Ask to replace profile config
  • cmd/microcloud: Update default profile if it already exists
  • cmd/microcloud: Specify services to consider for askClustered
  • service: MicroCloud unix client helper
  • service: Pass server certificate to LXD remote requests
  • doc/how-to: Add microcloud remove docs
  • test/suites: Add cluster remove tests
  • cmd/microcloud: Add microcloud remove
  • client: Add service-wide cluster remove client function
  • api: Add service-wide cluster remove endpoint
  • test/lint: Add a check for error messages starting with lower case
  • test/preseed: Use network gateway addr for lookup_subnet
  • cmd/microcloud: Detect microcloud listen IP from local ifaces
  • service: Specify first and last service to RunConcurrent
  • api: Split service endpoints into their own files
  • service: Add DeleteClusterMember to Service interface
  • test/suites: Fix ipv4 tests
  • cmd/microcloud: Fix error formatting
  • cmd/microcloud: Remove name from CephDedicatedInterface
  • cmd/microcloud: Print message during collection delay
  • test/includes: Fix test validators
  • cmd/microcloud: Use initConfig in unit tests
  • cmd/microcloud: Refactor askNetwork to use SystemInformation from initConfig
  • cmd/microcloud: Refactor askRemotePool to use SystemInformation from initConfig
  • cmd/microcloud: Refactor askLocalPool to use SystemInformation from initConfig
  • cmd/microcloud: Add askCephNetwork question helper
  • cmd/microcloud: Use initConfig as receiver for cluster reuse questions
  • cmd/microcloud: Use initConfig as receiver for pre-lookup questions
  • cmd/microcloud: Use initConfig for preseed command
  • cmd/microcloud: Use initConfig for add command
  • cmd/microcloud: Remove checkClustered helper
  • cmd/microcloud: Use initConfig as setupCluster receiver
  • cmd/microcloud: Use initConfig as validateSystems receiver
  • cmd/microcloud: Use initConfig as lookupPeers receiver
  • cmd/microcloud: Store SystemInformation and InitSystem clustering recipe in initConfig
  • cmd/microcloud: Add initConfig type
  • service: Check if fan is usable in SystemInformation
  • service: Add FAN network name constant
  • service: Add helpers to fetch LXD config and storage pools
  • service: Fetch all network interfaces at once
  • service: Return a 503 http error if LXD is not clustered
  • service: Add SystemInformation and CollectSystemInformation
  • Removes CODEOWNERS file
  • test/main: display the file during cleanup()
  • test/main: fix indentation
  • test/main: provide debug info during cleanup()
  • test/suites: Bump lookup timeout in tests to 10s
  • cmd/microcloud: Add lookup timeout flag
  • doc: Cluster recovery
  • test/includes: Add back specific disk validation
  • test: Add tests for interactive and preseed ceph encryption
  • doc: Update documentation for enabling Ceph full disk encryption
  • cmd/microcloud: Add Encrypt parameter when adding new nodes
  • cmd/microcloud: Add Encrypt parameter for the preseed initialization
  • cmd/microcloud: Add Encrypt parameter to encrypt designated Ceph disks
  • test: Add cluster recover test
  • cmd/microcloud: Add --local to cluster list
  • cmd: cluster recovery
  • test/includes: Add yq snap
  • test/main: remove unneeded notice level logs
  • Makefile: the toolchain directive should be better supported now
  • test/main: put debug output from cleanup in a log group
  • test/includes/microcloud: guard against unbound var in validate_system_microceph()
  • test/includes/microcloud: give 4 vCPUs to micro0X VMs (workaround cloud-init slowness)
  • test/includes/microcloud: remove lxd-installer to avoid unpredictability
  • test/includes/check: avoid tripping in lxd-installer
  • test/includes/microcloud: switch to 24.04 daily
  • test/includes/microcloud: stop masking cloud-init-hotplugd.socket
  • test/includes/microcloud: stop masking lvm2 related units
  • test/includes: Move disk ordering log to cleanup
  • test/includes/microcloud: silence LXD first use message more efficiently
  • github: don’t try to free up the ephemeral disk if not there
  • github: add debug output when ephemeral disk is a part on root disk
  • github: run system-tests on larger runners (8cores+32G)
  • test/suites: Use device paths instead of ids for disks
  • cmd/microcloud: Force disk ordering by path name
  • cmd/microcloud: Print TEST_CONSOLE message to stderr
  • .github/workflows: Use GOMIN from makefile
  • test: Use MicroOVN latest/edge
  • test/suites: Update database error in tests
  • cmd/microcloud: Update database error check
  • service: Update Database.IsOpen call
  • service: Update REST endpoint definitions
  • api: Use CheckMutualTLS in MicroCloud proxy
  • go: Update go modules
  • doc: remove link to linuxcontainers
  • doc: remove unused links.txt
  • doc: fix inclusive language check
  • doc: update starter pack
  • doc: replace the cheat sheet with a MyST cheat sheet
  • doc: convert files into Markdown/MyST
  • doc: rename files from .rst to .md
  • doc: include the MyST cheat sheet so it is published
  • doc: add a cheat sheet for MyST
  • service/lxd: remove now unneeded strings import
  • tests/includes/microcloud: mask esm-cache.service that slows down the boot
  • tests/includes/microcloud: don’t mask systemd-journald
  • tests/includes/microcloud: allow time for first boot to complete
  • doc: Update preseed.yaml
  • github: added .jira_sync_config.yaml for the synchronization with Jira
  • service: Add missing net/url import
  • doc: add doc targets to the main Makefile
  • doc: update to the latest version of the starter pack
  • tests: Add an interactive MicroCloud test with IPv6 disabled and IPv4 disabled
  • service: Use AuthProxy for LXD
  • service: Use UseAuthProxy for microcluster clients
  • client: Add UseAuthProxy client function
  • service: Add constants for storage pool names
  • service: Drop scheme from LXD cluster URLs
  • microcloud/api: Don’t require mDNS secret for cluster members
  • cmd/microcloud: Add askProceedIfNoOverlayNetwork question wheen no overlay networking solution is available
  • cdm/microcloud: Apply FAN network check during the setup
  • service/lxd: Introduce a FAN networking check function
  • mdns: if host does not support IPv6, disable mDNS IPv6 networking
  • mdns: add utility to check if host supports IPv6
  • microcloud/cmd: fix timeout issue
  • service: Run GetServer before checking API extensions
  • service: Fix error message
  • test/includes/microcloud: Remove core.trust_password support
  • service: Use token field in configFromToken
  • github: Increase min Go version to 1.22.3
  • gomod: Update dependencies
  • service: Add API extension argument
  • cmd/microcloud/waitready: Add context timeout for waitready
  • cmd/microcloud: Add context timeouts for bootstrap/join
  • service: Pass context to microcluster client funcs
  • go: Update microcluster and microceph dependency
  • microcloud/test: Add integration tests for Ceph networking
  • doc: Add documentation on how to set up a dedicated Ceph cluster network
  • microcloud/cmd/microcloud: Apply Ceph dedicated network config to MicroCeph service
  • microcloud/cmd/microcloud: Preseed logic to setup a dedicated Ceph network
  • microcloud/cmd/microcloud: Ceph dedicated network interactive setup
  • microcloud/cmd/microcloud: fix comments format
  • microcloud/cmd/microcloud: Add MicroCephInternalNetworkSubnet to InitSystem
  • microcloud/service/microceph: Add the ClusterConfig function
  • microcloud/service/lxd: Add ValidateCephInterfaces
  • microcloud/service/lxd: GetCephInterfaces function
  • microcloud/test/includes: Install zfsutils if SNAPSHOT_RESTORE is disabled
  • microcloud/test/includes: Prevent OSDs from re-upping themselves
  • microcloud/test/includes: Split up LXD/MicroCloud snap restarts
  • microcloud/test/includes: Log LXD storage resources to catch test error
  • microcloud/test: Rebalance test runs
  • cmd: Use const uplink network name
  • microcloud/service: Refactor uplink network name to const
  • microcloud/cmd/microcloud: Remove dqlite role shift timeouts
  • microcloud/service: Introduce service-level configuration
  • README: link to snap packaging repo
  • README: specify language for code blocks
  • README: add alt text to images
  • README: fix list indent
  • github: check go compat earlier
  • github: main branch of canonical/has-signed-canonical-cla
  • github: update test for new source location
  • test/includes/microcloud: silence shellcheck SC2048,SC2086
  • all: Move microcloud/* one level up
  • microcloud/service: Fix semver comparison
  • microcloud/test/suites: Add reuse-cluster tests
  • microcloud/test/includes: Add reuse-cluster input to interactive test helper
  • doc/how-to: Add reuse and skip documentation
  • microcloud/cmd/microcloud: Add ReuseExistingClusters key to Preseed
  • microcloud/service: Allow requesting the local node to join a cluster
  • microcloud/cmd/microcloud: Issue tokens on a remote system if it’s clustered
  • microcloud/cmd/microcloud: Move token issuing to AddPeers
  • microcloud/cmd/microcloud: Consider existing clusters when forming the cluster
  • microcloud/cmd/microcloud: Add checkClustered helper
  • microcloud/service: Allow fetching remote cluster members
  • microcloud/service: Add tokens endpoint
  • test/includes/microcloud: don’t start VMs after snapshot, reset_systems will
  • test/includes/microcloud: for loops are skipped when empty
  • test/includes/microcloud: minor rework of cluster_reset()
  • test/includes/microcloud: minor rework of reset_snaps()
  • test/includes/microcloud: debug bins are not dirs
  • test/includes/microcloud: use “snap list ”
  • github: split the testbed setup from the actual test runs
  • test/main: allow just setting up the testbed
  • test/includes/microcloud: only sleep if not taking a snapshot
  • test/includes/microcloud: silence lxd welcome message in setup_system()
  • test/includes/microcloud: free disk blocks
  • test/includes/microcloud: disable vGPU to save RAM
  • test/includes/microcloud: faster apt
  • test/includes/microcloud: turn off debugfs and mitigations
  • test/includes/microcloud: disable unneeded services/timers/sockets/mounts (source of noise/slowdown)
  • github: Reclaim some memory
  • test/includes/microcloud: workaround for set -e
  • test/includes/microcloud: reorder check
  • test/includes/microcloud: don’t use wrapper shell+cat heredocs for setup
  • test/includes/microcloud: clear inline comments too
  • github: run more parallel system tests
  • test/main: split test between more and smaller groups
  • test/includes/microcloud: undoing workaround for LXD shutdown bug
  • github: split system-tests run into more steps
  • github: prepare debug binaries in the build step
  • test/includes/microcloud: reduce set -x log noise
  • test/main: add notice level around tests
  • test/includes/microcloud: tweak lxd_wait_vm()
  • test/suites/basic: use output comparison instead of grep
  • test/suites/add: use output comparison instead of grep
  • test/includes/microcloud: use output comparison instead of grep
  • test/main: list all instances during cleanup
  • test/includes/microcloud: blkdiscard the TEST_STORAGE_SOURCE disk
  • test/suites/basic: simplify lxd_wait_vm ready check
  • test/includes/microcloud: simplify lxd_wait_vm ready check
  • test/includes/microcloud: feed var directly to grep (less log noise)
  • test/includes/microcloud: use bash regex matching
  • test/suites/basic: replace printf by formated seq output
  • test/includes/microcloud: replace printf by formated seq output
  • test/includes/microcloud: remove unneeded quoting
  • test/includes/microcloud: switch to bash
  • test/suites/add: switch to bash
  • test/suites/add: switch to bash
  • test/suites/add: switch to bash
  • test/includes/check: switch to bash
  • test/main: switch to bash
  • test/suites/preseed: less subshell
  • test/includes/microcloud: don’t blow up downloaded images between cleanups
  • test/main: warn on non-latest/edge snap channels
  • test/main: use 22.03/edge for microovn
  • test/main: warn on non-latest/edge snap channels
  • test/includes/check: add check_snap_channels()
  • test/suites/basic: use cohort and channel when re-installing micro{ceph,ovn} snaps
  • test/includes/microcloud: use channel vars for all snaps
  • test/main: add variables to select snap channels
  • test/main: kill our process group when CONCURRENT_SETUP=1
  • test/includes/microcloud: snap install --dangerous is safer than --devmode
  • test/includes/microcloud: remove warning
  • github: use LXD latest/edge in the host VM
  • github: be stricter with shellcheck
  • github: use non-shallow clones for differential shellcheck
  • test/includes/microcloud: don’t configure enp6s0 in setup_system()
  • Revert “test/includes/microcloud: simplify rm -rf globbing”
  • github: run tests on a weekly schedule
  • test/includes/microcloud: add loggroups to {reset,restore,new}_systems functions
  • microcloud/cmd/microcloud: Don’t use mDNS payload address for local node verification
  • microcloud/service: Don’t restart LXD unless API version is less than that of 5.21
  • microcloud/cmd: Check uplink network config before setting up the cluster
  • test/includes/microcloud: simplify rm -rf globbing
  • test/suites/basic: use smaller rootfs
  • test/suites/basic: add test OVN connectivity
  • github: sideload microcloud{,d} binaries for system-tests
  • test/includes/microcloud: use quiet file pushes
  • test/includes/microcloud: safer grep for matching numeric args
  • test/includes/microcloud: safer grep
  • test/includes/microcloud: use LXD latest/edge (connect-plug-ovn-certificates: gracefully handle /etc/ovn being a symlink by simondeziel · Pull Request #426 · canonical/lxd-pkg-snap · GitHub)
  • test/includes/microcloud: less subshells
  • test/includes/microcloud: poll less aggressively in lxd_wait_vm()
  • test/includes/microcloud: add some echos to set_debug_binaries()
  • test/includes/microcloud: workaround for LXD shutdown bug (debug)
  • test/includes/microcloud: use cohorts for micro{ceph,ovn,cloud} too
  • test/includes/microcloud: only take a snapshot if SNAPSHOT_RESTORE=1
  • github: split system tests into suites
  • test/main: rework how individual/group test(s) are run
  • test/suites/basic: s/test_case/_test_case/ as it’s not an actual testing function
  • test/main: running single test case also require the new_systems call
  • test/suites/basic: less subshells
  • test/suites/basic: safer grep
  • test/suites/add: less subshells
  • test/includes/microcloud: safer grep
  • test/suites/add: reduce subshell use
  • test/suites/preseed: fix TEST_CONSOLE=0
  • test/suites/basic: fix TEST_CONSOLE=0
  • github: skip launching VMs on top of microcloud VMs
  • test/suites/basic: optionally skip launching VMs on microcloud
  • test/main: add test_instances_config
  • test/suites/preseed: use less subshells
  • test/suites/basic: add test_instances_config() test
  • test/suites/basic: use less subshells in test_instances_launch()
  • test/includes/microcloud: use wait even if CONCURRENT_SETUP!=1
  • test/includes/microcloud: call new_system() in new_systems()
  • test/includes/microcloud: set suitable PATH in the profile
  • test/main: rename test_instances to test_instances_launch
  • test/suites/basic: rename test_instances to test_instances_launch
  • test/suites/basic: create smaller c1/v1 instances
  • test/includes/microcloud: fix restore_system arg passing
  • test/includes/microcloud: use lxd default channel (5.21/stable as of today)
  • test/suite/basic: nicer output when starting c1/v1
  • test/includes/microcloud: nicer output when wiping/deleting disks
  • github: require system tests to pass before triggering LP build
  • github: add initial (snap-based) system tests
  • github: align tests job with LXD’s
  • github: fix check for compat with Go 1.22.0
  • test/main: fix indentation
  • test/suites/basic: report when c1/v1 have booted successfully
  • test/suites/basic: poll less frequently when waiting on c1/v1
  • test/suites/basic: use ubuntu-minimal for c1/v1
  • test/includes/check: require instance_ready_state API on host LXD
  • test/includes/microcloud: stop adding ubuntu-minimal:
  • test/includes/microcloud: only install zfsutils-linux and htop if CLOUD_INSPECT is set
  • test/includes/microcloud: allow using a dedicated storage source device
  • microcloud/test/includes: Fix dns validation
  • microcloud/test/suites: Apply and validate dns env var
  • doc/tutorial: remove confusing sentence
  • doc/tutorial: add a note about file push
  • microcloud/test/includes: Shorter dns env var
  • go: Run make update-gomod
  • microcloud/cmd/microcloud: Update microceph disk args
  • microcloud/service: Update microcluster hook args
  • microcloud/service: Update microceph AddDisk return values
  • microcloud/service: Convert port numbers to int64
  • microcloud: fix go version in go.mod
  • Enable renovate bot
  • github: ask dependabot to track gomod updates
  • github: enable codeql scanning
  • microcloud/cmd/microcloudd: Fix golangci-lint for go 1.22
  • Run go mod tidy
  • Makefile: Set minimum required version for update-gomod
  • github: Check minimum required go version in CI
  • doc: add LXD UI instructions to the tutorial
  • doc: add a “Next steps” section to the tutorial
  • doc: update snap channel for LXD
  • doc: Update docs for cephfs and dns nameservers
  • microcloud/test/includes: Update tests
  • microcloud/cmd/microcloud: Use both ipv6 and ipv4 chosen addresses for DNS
  • github: drop DCO check now that we have the DCO app enabled
  • doc: clarify which snap channels to use for production-ready version
  • microcloud/service/lxd: parametrize LXD with instances.migration.stateful set to true
  • microcloud/service: Only set source.wipe if user explicitly agrees
  • build(deps): bump actions/dependency-review-action from 3 to 4
  • microcloud/test/includes: Sync VM dates between tests
  • microcloud/test/includes: Add support for debug binaries to the test suite
  • build(deps): bump actions/setup-go from 4 to 5
  • doc/networking: clarify how networking works
  • build(deps): bump actions/upload-artifact from 3 to 4
  • doc: use consistent spelling for AGPLv3 and “licence”
  • doc: update lxd-sphinx-extensions to canonical-sphinx-extensions
  • microcloud/test/includes: More consistent OSD clearing
  • microcloud/cmd/microcloud: Require a lookup interface for preseed
  • microcloud/cmd/microcloud: Clean up CLI format
  • microcloud/test/suites: Include cephfs in test suite
  • microcloud/test/includes: Tear down cephfs in tests
  • microcloud/cmd/microcloud: Send CephFS payload to LXD
  • microcloud/service: Add LXD API payloads for CephFS
  • microcloud/cmd/microcloud: Add askRemotePool to common struct
  • doc: fix broken links in documentation
  • doc/support: add information about Ubuntu Pro support
  • doc/snaps: add information about the supported channels
  • doc/tutorial: Update docs
  • microcloud/cmd/microcloud: Clear up network questions
  • microcloud/service: More precise LXD pre-init error
  • test: add custom DNS addresses for OVN network for interactive/preseed mode
  • microcloud/cmd/microcloud: Ask if user desires to give custom DNS addresses for OVN uplink
  • doc/spellcheck: add “Ceph’s” and “LXD’s”
  • doc/tutorial: user correct image server
  • doc: install snaps separately
  • doc: update URL in the header
  • microcloud/service/lxd: Option to add custom dns servers for OVN uplink other than gateway addr
  • doc/requirements: add links to LXD and Ceph requirements
  • microcloud/service: Update microcluster hook arguments
  • microcloud: Go mod update
  • microcloud/cmd/microcloud: Add unit test for minimum ceph disks
  • microcloud/cmd/microcloud: Fix tests
  • microcloud/cmd/microcloud: Only require 3 systems to select ceph storage
  • doc: clarify RAM requirements in the tutorial
  • github: Bring CODEOWNERS inline with microcluster
  • doc: add information about fan network
  • microcloud/service: Properly broadcast available interfaces over those interfaces
  • doc: remove recommendation of edge
  • doc: add links to MicroCeph and MicroOVN documentation
  • doc: add some troubleshooting information
  • doc: document preseed support for microcloud init
  • microcloud/test/includes: Fix typo in testsuite
  • microcloud/test/suites: Update preseed test
  • microcloud/cmd/microcloud: Add option to specify interface in preseed
  • microcloud/cmd/microcloud: Update usages of askAddress and NetworkInfo
  • microcloud/cmd/microcloud: Pass network interface through initial networking questions
  • microcloud/mdns: Pass the interface to the mdns handler
  • microcloud/mdns: Include net.Interface in NetworkInfo
  • doc: update logo
  • doc: make the spelling check happy
  • doc: add a cheat sheet for common commands
  • doc: update MicroCloud description
  • doc/install: add cohort=“+”
  • doc: add a tutorial
  • microcloud/service: Add ZFS pool description
  • microcloud/test/includes: Fix instance removal between tests
  • microcloud/test/includes: Default to edge snap if local one not provided
  • microcloud/test/suites: Rename conflicting variable name
  • microcloud/cmd/microcloud: Use stdin for preseed.yaml
  • test/suites/basic: don’t explicitely pull curl
  • microcloud/Makefile: Fix double check-unit target
  • github: Run push actions on main branch only
  • doc: add a link to the landing page
  • build(deps): bump redhat-plumbers-in-action/differential-shellcheck
  • github: add commit signing and git fsck to build job
  • Add dependabot config
  • doc: fix LXD link
  • github: Include build step in tests
  • doc: remove the doc title in the sidebar
  • doc: update to the latest version of the starter pack
  • doc: fix typo
  • github: Skip snap build for pushes on branches from dependabot
7 Likes