Introduction
The LXD team would like to announce the release of MicroCloud 2.1.2 LTS!
This is the second bugfix release for MicroCloud 2.1. It features a more user friendly passphrase input using auto completion after transferring the passphrase out of band and support for LXD 6.6.
As with all our other LTS releases, this one will be supported for 5 years (until June 2029).
Thank you to everyone who contributed to this release!
Release highlights
Passphrase input using auto completion
MicroCloud already generates easy to remember passphrases using an underlying word list. When transferring the passphrase out of band, it sometimes might still be hard to remember the exact spelling of the individual words.
To allow always putting in the correct passphrase, the CLI now uses auto completion for each word of the passphrase if there is a match with any of the words in the word list.
This is especially useful when the passphrase cannot be copied and also speeds up the input procedure:
![]()
Use the tab key to select the suggested word.
LXD 6.6 support
In the last release notes we highlighted the support of LXD’s feature release track 6. Whilst we still recommend using the 5.21 LTS version of LXD, this allows exploring the latest features of LXD without having to use a non-LTS version of MicroCloud.
In the most recent feature release 6.6, some breaking API endpoint changes got introduced which required further adaption also in MicroCloud 2.1 LTS.
New MicroCloud clusters can now be deployed using MicroCloud 2.1 LTS and LXD 6.6.
Bugfix highlights
Panic in case of leftover network resources
In case a system was already used to configure distributed OVN networking, it might still have traces of the old UPLINK network left which caused a panic.
This was already fixed with in an interim release of MicroCloud 2.1.1.
Prevent skipping distributed networking
In case the existing MicroCloud cluster already uses distributed networking, new members cannot be allowed to skip the configuration (e.g. interface selection) as it’s required.
We automatically go into configuration mode for distributed networking in case it’s required by the existing cluster when adding new members.
This was already fixed with in an interim release of MicroCloud 2.1.1.
Updating to the new version
In case you are already tracking MicroCloud 2.1 LTS, follow the How to update MicroCloud guide to update your MicroCloud to the latest version 2.1.2.
MicroCloud 2.1.2 is currently available in the 2/candidate snap channel.
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 has reached EOL in April 2025.
See the how to upgrade guide.
Full changelog
Full commit list
- version: Bump to 2.1.2
- build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0
- build(deps): bump actions/download-artifact from 6.0.0 to 7.0.0
- build(deps): bump actions/download-artifact
- build(deps): bump actions/upload-artifact
- build(deps): bump github/codeql-action from 4.31.7 to 4.31.8
- build(deps): bump actions/cache from 4.3.0 to 5.0.1
- build(deps): bump redhat-plumbers-in-action/differential-shellcheck
- build(deps): bump github.com/charmbracelet/x/ansi from 0.10.2 to 0.11.2
- test/suites/basic: Use sysctl directly to disable IPv6
- test/includes/microcloud: Use sysctl directly to disable IPv6
- test/includes/microcloud: Install yq from apt for performance reasons
- github/actions/system-test: Source and use retry func for snap installs
- test: Drop check_snap_channels func
- test/suites/upgrade: Enable retries for snap downloads
- test/suites/basic: Enable retries for snap downloads
- test/includes/microcloud: Enable retries for apt/snap downloads
- test/includes/microcloud: Add retry func
- cmd/microcloud/preseed: Update tests to accomodate new checks
- github/workflows/security: Install snapd for the trivy job
- cmd/microcloud/preseed: Move validation further up
- cmd/microcloud/preseed: Add check in case lookup subnet is missing in multicast mode
- cmd/microcloud/preseed: Provide clear error when preseed hostnames are incorrect in unicast mode
- cmd/microcloud/preseed: Proactively check IP networks returned from getTargetCephNetworks
- cmd/microcloud/ask: Clarify return values of getTargetCephNetworks
- service/lxd: Provide more context for Ceph interface validation error
- cmd/microcloud/ask: Provide more context for Ceph interface validation error
- test/suites/preseed: Create check for unicast mode
- cmd/microcloud/preseed: Use standardized tui print warning for OSD count message
- service/lxd: Drop the now unused FindInterfaceForSubnet func
- cmd/microcloud/preseed: Fix always expecting LookupSubnet to be present
- cmd/microcloud/preseed: Add findInterfaceAndNetworkForAddress func
- cmd/microcloud: Update warning color for status messages
- doc/tutorial: Update docs and replace error with warning
- cmd/microcloud/ask: Provide hint about number of systems in fault tolerance error
- cmd/microcloud/ask: Return recommended disk setup error as warning
- cmd/microcloud/ask: Handle askRetryWarningError returned by askRetry callback
- cmd/microcloud/ask: Add askRetryWarningError
- go: Update deps
- service/lxd: Drop support for different join token mechanisms
- cmd/microcloud/main_init: Don’t run reverters before the actual volume is created
- cmd/microcloud/main_init: Wait on returned operations
- make: Always download latest golangci-lint
- make: Remove LXD pin on 5.21-stable branch
- make: Update min Go version
- doc: add meta descriptions to updated docs
- doc: emphasize UI documentation
- doc: add UI documentation
- go: Add dependencies
- github: Use ubuntu-slim runners
- doc/rtd: Use Go 1.25
- github: Use ubuntu-slim runners
- cmd/microcloudd: set ctx timeout for waitready
- cmd/microcloud: set ctx timeout for waitReady
- service: waitready use context timeout
- doc: Update MyST syntax guide link
- test/e2e: Print cluster info @ test end
- test/e2e: Fix typo
- test/e2e: Hard wrap e2e test disclaimer
- cmd/microcloudd: unexport run func
- cmd/microcloud: unexport run func
- cmd/microcloudd: unexport Command funcs
- cmd/microcloud: Unexport Command funcs
- test/suites/upgrade: Test MicroCeph, MicroOVN and LXD only after members have stabilized
- github/workflows/test: Remove daily Canonical runner based tests
- test/includes: Fix debug binary injection in set_debug_binaries
- test/suites/upgrade: Fix wrong name in error message
- test/includes/microcloud: combine
lxc exec ... rm -fcalls - test/includes/microcloud: use
--quietwhen pushing snaps - service/microceph: Bump disk add timeout to 5 minutes
- test: Add list disks by id debug information
- github: Remove redundant ‘directory’ statement
- github: Watch .github/actions/* directory for updates
- test/e2e/run: Fetch the instances address on each retry
- doc: replace old explanation-networking link target
- test/includes/microcloud: avoid the archaic
ifconfigcommand - doc: link homepage keywords to further info
- doc: expand about microcloud explanation page
- doc: add security overview
- doc: update references to the multi-member tutorial
- doc: add single-member tutorial
- doc: restructure for multi-member and single-member tutorials
- doc/tutorial: update hostname-username pairs
- service: Use the compareVersion helper for LXD version checks
- service: Add compareVersion func
- service: Add cleanVersion func
- github: reintroduce CLA check (org one no longer required)
- cmd/tui: auto-submit passphrase on paste
- cmd/tui: handle esc/^C during passphrase autocomplete
- test/e2e/README: document
DESTROY=onlymode - test/e2e/run: add
DESTROY=onlymode - cmd/tui/autocomplete: Don’t blur text input during regular inputs
- cmd/tui/autocomplete: Remove extra newline after passphrase input
- cmd/tui/autocomplete: Don’t highlight passphrase prompt
- cmd/microcloud: Remove unused service handler arg from askPassphrase
- cmd/microcloud: Add missing system prefix
- cmd/microcloud: Add missing dot and prefix
- cmd/microcloud: Move fingerprint verification info post passphrase input
- tests: Add CR for passphrase input
- cmd/tui: Add
ctrl:mcase - cmd/microcloud: Add
ctrl:mto test console stderr - cmd/microcloud: Use
AskPassphrase()method - cmd/tui: Add
(InputHandler).AskPassphrase()method - cmd/tui: Add text input model for passphrase completions
- service: Use
WordlistingeneratePassphrase() - service: Add
PassphraseWordCountconstant - service: Export
Wordlistslice - service: Update word list constant
- cmd/microcloud: Remove subnet sharing warning
- cmd/microcloud: Refactor to use
NetworkInterfaceInfostruct - cmd/microcloud: Refactor
validateCephInterfacesForSubnet() - service: Add
FindInterfaceForSubnetmethod - cmd/microcloud: Add
NetworkInterfaceInfostruct - doc: Update broken link to MyST syntax guide
- github: remove the CLA check now there is a Org level one
- github: Run scheduled tests fully also for doc only changes
- doc/reference/releases-snaps: Remove odd word from end of sentence
- doc: Add missing newlines to files
- github: use the Go version from
go.modfor the TiCS run - github/workflows/tests: Don’t run test jobs on forks
- build(deps): bump actions/checkout in /.github/actions/system-test
- build(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0
- build(deps): bump github/codeql-action from 4.31.6 to 4.31.7
- build(deps): bump actions/checkout from 6.0.0 to 6.0.1
- build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2
- build(deps): bump golang.org/x/sys from 0.38.0 to 0.39.0
- doc/tutorial: update info and link for lxd tutorial
- github/workflows/test: Remove daily Canonical runner based tests
- github/workflows/test: Use Canonical runners
- github/actions/system-test: Install Terraform from snap
- github/workflows/tests: Don’t run test jobs on forks
- github/workflows/commits: Don’t run branch and CLA check job on forks
- github/workflows/codeql: Don’t run analyze job on forks
- demos/terraform: remove optional section from cloud init
- test: add LXD host logs and snap list to terraform_demo
- Test: skip the collection of coverage files for the terraform demo test
- Test: added an input var to configure the collection of coverage files
- Test: print the relevant log files to stdout in case of failure in the Terraform demo test
- Test: changed the disk prefixes in the Terraform demo test and added the DNS servers variable
- Demos: removed the VM index from the disk-by-id paths for storage devices in the Terraform demo in output.tf
- Demos: removed the VM index from the disk-by-id paths for storage devices in the Terraform demo in main.tf
- Demos: modified the output.tf to use the changed disk device name
- Demos: modified the main.tf to use the changed disk device name
- Demos: changed the disk device name in variable.tf to ‘/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_lxd’_to remove ‘/dev/sdb’ and ‘/dev/sdc’
- Demos: changed the disk device name in terraform.tfvars.example in ‘/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_lxd’_to remove ‘/dev/sdb’ and ‘/dev/sdc’
- Demos: added a timeout of 15 minutes on instance creation and removed the single timeouts on the execs
- Demos: added a timeout of 15 minutes on instance creation in the tfvar example file
- Demos: added a timeout of 15 minutes on instance creation in the variable file
- Test: add initial Terraform demo suite
- Test: wire Terraform demo suite into test runner
- Test: include Terraform demo in CI tests workflow
- Test: include Terraform demo in system-test action
- doc: added a how-to guide for the MicroCloud Terraform demo
- demos: Added a demo in Terraform that provisions the same MicroCloud configuration described in the tutorial
- github: added terraform files to .gitignore
- build(deps): bump github/codeql-action from 4.31.5 to 4.31.6
- build(deps): bump actions/checkout from 5.0.0 to 6.0.0
- build(deps): bump actions/checkout in /.github/actions/system-test
- build(deps): bump actions/setup-go from 6.0.0 to 6.1.0
- build(deps): bump golang.org/x/mod from 0.29.0 to 0.30.0
- build(deps): bump actions/setup-go in /.github/actions/system-test
- build(deps): bump tiobe/tics-github-action from 3.6.0 to 3.7.0
- build(deps): bump actions/dependency-review-action from 4.8.1 to 4.8.2
- build(deps): bump github/codeql-action from 4.31.2 to 4.31.5
- build(deps): bump golang.org/x/sys from 0.37.0 to 0.38.0
- build(deps): bump tiobe/tics-github-action from 3.5.0 to 3.6.0
- build(deps): bump golang.org/x/sync from 0.17.0 to 0.18.0
- build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0
- build(deps): bump github/codeql-action from 4.30.9 to 4.31.2
- build(deps): bump actions/download-artifact
- build(deps): bump actions/download-artifact from 5.0.0 to 6.0.0
- build(deps): bump actions/upload-artifact
- build(deps): bump actions/setup-go in /.github/actions/system-test
- build(deps): bump actions/checkout in /.github/actions/system-test
- build(deps): bump actions/download-artifact
- build(deps): bump actions/upload-artifact
- go: Update dependencies
- make: Bump min version of Go and latest LXD dep
- service: Pass context to GetRemoteCertificate
- test/suites: Use SETUP_OVN_EXPLICIT and SETUP_OVN_IMPLICIT
- test/includes/microcloud: Add SETUP_OVN_(EXPLICIT|IMPLICIT)
- cmd/microcloud: Prevent skipping distributed networking
- build(deps): bump github/codeql-action from 4.30.8 to 4.30.9
- build(deps): bump golang.org/x/mod from 0.28.0 to 0.29.0
- build(deps): bump golang.org/x/net from 0.44.0 to 0.46.0
- build(deps): bump actions/dependency-review-action from 4.8.0 to 4.8.1
- build(deps): bump github/codeql-action from 3.30.6 to 4.30.8
- doc: fix microovn object inventory issue in CI build
- build(deps): bump github.com/charmbracelet/x/ansi from 0.10.1 to 0.10.2
- build(deps): bump github/codeql-action from 3.30.5 to 3.30.6
- build(deps): bump actions/dependency-review-action from 4.7.3 to 4.8.0
- build(deps): bump github/codeql-action from 3.30.3 to 3.30.5
- build(deps): bump actions/cache from 4.2.4 to 4.3.0
- build(deps): bump tiobe/tics-github-action from 3.4.0 to 3.5.0
- build(deps): bump github.com/charmbracelet/bubbletea
- build(deps): bump github.com/stretchr/testify from 1.11.0 to 1.11.1
- build(deps): bump github/codeql-action from 3.30.1 to 3.30.3
- build(deps): bump golang.org/x/net from 0.43.0 to 0.44.0
- build(deps): bump github.com/charmbracelet/bubbletea from 1.3.7 to 1.3.9
- Revert “doc/reference/releases-snaps: Update link to MicroOVN release process”
- github/workflows/test: Use not latest edge for MicroCeph and MicroOVN
- doc/reference/releases-snaps: Update link to MicroOVN release process
- build(deps): bump golang.org/x/sys from 0.35.0 to 0.36.0
- build(deps): bump golang.org/x/sync from 0.16.0 to 0.17.0
- build(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1
- build(deps): bump github/codeql-action from 3.29.11 to 3.30.1
- build(deps): bump actions/setup-go from 5.5.0 to 6.0.0
- build(deps): bump actions/dependency-review-action from 4.7.2 to 4.7.3
- build(deps): bump actions/labeler from 5.0.0 to 6.0.1
- build(deps): bump github.com/charmbracelet/bubbletea from 1.3.6 to 1.3.7
- build(deps): bump golang.org/x/mod from 0.27.0 to 0.28.0
- doc: remove static links to lxd docs
- doc: manually add linktext for related links
- build(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.0
- build(deps): bump github/codeql-action from 3.29.10 to 3.29.11
- build(deps): bump actions/dependency-review-action from 4.7.1 to 4.7.2
- test/suites/basic: Add check for installing MicroCloud with left over OVN resources
- cmd/microcloud: Refactor askOVNNetwork to have more granular warnings
- service: Prevent panic in SupportsOVNNetwork
- build(deps): bump github/codeql-action from 3.29.8 to 3.29.10
- build(deps): bump canonical/has-signed-canonical-cla from 2.1.0 to 2.2.0
- build(deps): bump github/codeql-action from 3.29.7 to 3.29.8
- build(deps): bump actions/cache from 4.2.3 to 4.2.4
- build(deps): bump golang.org/x/mod from 0.26.0 to 0.27.0
- build(deps): bump golang.org/x/net from 0.42.0 to 0.43.0
- build(deps): bump actions/download-artifact from 4.3.0 to 5.0.0
- build(deps): bump actions/checkout from 4.2.2 to 5.0.0
- build(deps): bump github.com/charmbracelet/x/ansi from 0.9.3 to 0.10.1
- build(deps): bump github/codeql-action from 3.29.4 to 3.29.5