Introduction
The LXD team is very excited to announce the release of LXD 5.18!
This release includes three of our roadmap items for this cycle; bundled documentation, configuration metadata API, and the ability to pass OVN logs to Loki. The snap package also includes custom fixes to the upstream EDK2 firmware used with virtual machines to restore booting of VMs on ARM machines.
Enjoy!
New features and highlights
Bundled documentation web site in snap package
The documentation website is normally available online at LXD Documentation is now also bundled with the LXD snap package and LXD is able to serve it over its normal HTTPS socket.
This has the advantage that the documentation will match the version of the LXD server you are using.
To access the bundled documentation you must be using the snap package and set the core.https_address setting:
lxc config set core.https_address 127.0.0.1:8443
Then you can browse to https://127.0.0.1:8443/documentation
to access the bundled documentation website. You may get a certificate warning if you have not added the LXD serverās certificate to your browserās/operating systemās trust store.
Configuration metadata API for documentation generation
There is now a /1.0/metadata/configuration
API endpoint that returns metadata about the available configuration options in LXD. Right now this just returns options for server, cluster and instance. However we plan to expand this soon.
This new API is being used to automatically generate parts of our documentation to ensure that the settings referenced in the documentation match what is in LXD itself.
Receive OVN logs into LXD and Loki
LXD now has the ability to receive syslog messages via an optional syslog unixgram socket.
This allows for OVN to be configured to send its logs into LXD.
This allows for viewing the OVN logs across all cluster members using the normal LXD API or CLI tooling, such as lxc monitor --pretty
, and it also means they can be optionally passed into Loki via LXDās existing integration.
For now this new syslog socket only accepts messages in the OVN log format.
For an example of how to set this up please see Send OVN logs to LXD.
All projects support for lxc operation list
It is now possible to list all ongoing operations across all projects using:
lxc operation list --all-projects
Default support for ubuntu-minimal
remotes in lxc
The ubuntu-minimal
and ubuntu-minimal-daily
remotes are now included with the lxc
command by default.
This completes the full suite of official Ubuntu remotes to accompany the existing ubuntu
and ubuntu-daily
remotes.
So now it is possible to launch an instance using these remotes, for example:
lxc launch ubuntu-minimal:22.04 c1
Complete changelog
Here is a complete list of all changes in this release:
Full commit list
- doc: directly link to config options
- doc: fix breaking build
- doc: update woke URL and add a target to the Makefile
- doc: update Contribution section
- doc: add instructions for documenting configuration options
- lxd/auth/rbac: Fix regression
- doc/manpages: add the man pages to the docs
- doc: exclude manpages from automatic doc checks
- doc: link lxc commands to man pages
- doc: add manpages to topical navigation
- lxd/storage/zfs: Fix version handling
- shared/version: Show parsed version on failure
- lxc: Un-hide
lxc pause
command - lxc: Un-hide
lxc init
command - doc: unpin Sphinx version
- lxc: Un-hide
lxc monitor
command - lxc: Un-hide
lxc query
command - doc: add a way to link to Swagger sections
- doc/instances: add API instructions
- scripts/bash/lxd-client: fix completion to work for non-default projects
- scripts/bash/lxd-client: use parentheses around grep -E alternations
- scripts/bash/lxd-client: donāt propose ā(current)ā as valid project
- doc: donāt check validity of GitHub anchors
- doc: add guide about virt-v2v
- doc: link to manpages
- lxd: Use instance lock when updating instance
- shared/util: use LC_ALL instead of LANG in RunCommandCLocale()
- github: Initial foray into using Canonicalās test runners
- metadata: add
entity
metadata key, updatelxddoc
tolxdmeta
anddefault
todefaultdesc
- lxd-metadata: fixes to generate JSON and sort .txt values at every levels
- lxd-metadata: Update unit test with the new JSON structure
- lxd/metadata: initial
metadata/configuration.json
- update .gitignore to not ignore
doc/config_options.txt
anymore - doc: Add initial
doc/config_options.txt
file - doc: update documentation to mention the
cluster-cluster
group andlxdmeta:generate
- doc: remove useless readthedoc hook
- lxd/resources: Use
lshw
if DMI is not available - lxd/config: Add ubuntu-minimal and ubuntu-minimal-daily remotes
- docs: Add description of ubuntu-minimal remote image servers
- zfs: Disallow block.* settings for regular custom block volumes
- test: Check that custom block volumes cannot set block.*
- makefile: add
update-metadata
to generate JSON documentation and .TXT config options to the source - test/lint: Add
metadata-up-to-date.sh
to ensure commit has the latest metadata and doc config options - lxd: New API endpoint to expose JSON generated metadata configuration
- api: Add
metadata_configuration
API extension - doc: generate rest-api.yaml
- doc: Updates routed nic how-to to use pass netplan config via stdin.
- doc: exclude doctrees from the documentation output
- doc: move header CSS into a separate file
- doc: move color variables into a CSS file
- lxd/resources: Use RunCommandCLocale when calling
lshw
- drivers: Use StatusError to ensure error code consistency
- doc: hide toctree for man pages
- doc: pin Sphinx version again
- instance_exec: Add contraint validation
- lxd/cgroup/abstraction: skip loop devices from cgroup2ās io.stat
- lxd/cgroup/abstraction: skip loop devices from cgroup1ās blkio.throttle.{io_service_bytes_recursive,io_serviced_recursive}
- doc/zfs: remove limitation
- Makefile: fix ātagsā target and donāt make it PHONY
- Makefile: donāt use xargs in ātagsā target
- test/lint/metadata: donāt use fifo to diff before and after files
- test/lint/metadata: use unified diff output and donāt abort if diff returns non-0
- Update storage_volumes.md
- btrfs: Mention detected FS on detection error
- lxd/device/disk: Refactor CanHotPlug
- lxd/device/disk: Check that filesytem disks being attached to VMs have a mount path inside guest
- lxd/device/disk: Removes unused sourceIsDir function
- lxd: serve documentation on the
/documentation/
endpoint - doc: general documentation on how to access the LXD documentation
- Merge branch ācanonical:mainā into patch-1
- Update storage_volumes.md
- storage/drivers/ceph: Differentiate between a true non-existent OSD pool and a Ceph internal issue
- Update storage_volumes.md
- build(deps): bump actions/checkout from 3 to 4
- doc: add information about LXD 4.0 EOL
- Makefile: check
shellcheck
's version only if present - shared/cmd/ask: Add Asker type with CLI helpers as methods
- lxd: Setup global Asker for lxd commands
- lxc: Setup global Asker for lxc commands
- lxd-migrate: Setup global Asker for lxd-migrate commands
- doc/instances: add UI instructions
- doc/zfs: document that some features require ZFS 2.2
- gomod: Dependency updates
- gomod: Pin some dependencies for compatibility with Go 1.18
- lxd-agent: Skip when already mounted
- lxd/instance/qemu: Fix bootorder when using -kernel
- Revert ātest/storage_local_volume_handling: use a smaller ISO fileā
- Revert ātest/storage_volume_import: use smaller ISO filesā
- github: Adds CODEOWNERS file
- lxd/apparmor/instance/qemu: Allow /etc/machine-id
- Makefile: Allow setting custom version
- lxd/instance/qemu: Avoid old -bios syntax
- actions: Test LXD tarball is produced correctly
- test/main: report disk usage (df -h) prior to actually cleaning up
- test/backends/ceph: lower OSD pg_num to 8
- github: action runners already have snapd installed
- github: remove core20 to reclaim some space in the rootfs
- github: use the whole ephemeral disk as ceph OSD
- github: instruct curl to fail on error when downloading gotip
- lxd/network/openvswitch/ovn: Add function to retrieve all logical switch port IPs
- lxd/network/driver_ovn: Fix OVN leases not showing static ips
- lxd/device/nic_ovn: Use all allocated IPs as dynamic when static IP is not set for a device
- lxd/network/driver_ovn: Remove redundant InstanceDevicePortDynamicIPs function
- github: bail if the rootfs and the ephemeral one are on the same disk
- lxd-agent: Validate fields only for CPU info
- doc/storage: clarify that
block.*
options are for filesystem volumes - lxd/storage/drivers/btrfs: Use command instead of walking dir to get subvolumes
- lxd/auth: Exit goroutine if RBAC has been disabled
- shared/simplestreams/products: Adds support for incus.tar.xz items
- shared/validate: names starting with a digit are valid
- test/basic: 12test is now a valid instance name
- test/basic: test invalid instance name with a period
- lxd: Revert server config if it cannot be set
- doc/faq: add info about VPN cgroup1 issues
- lxd/device/device/utils/network: Improve error handling and messaging in networkSRIOVRestoreVF
- test/network: test DNS resolution of instance names
- github: dnsutils pulls bind9-dnsutils since 20.04
- lxd: Return http 429 on repeated shutdowns
- lxd: Fix type field formatting
- lxd/cluster/config: add a long desc to
loki.api.url
- lxd/metadata: add a long desc to
loki.api.url
- doc/config_options: add a long desc to
loki.api.url
- doc/api-extensions: explain the expected format of loki.api.url
- doc: Update docs on loki.api.url
- lxd/storage/drivers/driver_zfs_volumes: Disallow setting zfs.block_mode for VM block volumes
- lxd/main/forknet: Remove altname if preventing rename of NIC interface
- lxd: Add syslog listener
- shared/api: Add new EventTypeOVN
- config: Add
core.syslog_socket
- lxd: Setup syslog listener
- events: Include EventTypeOVN when querying events
- config: Allow
ovn
value inloki.types
setting - loki: Handle OVN events
- events: Add event type
ovn
to internal listener - doc: Extend wordlist
- api: Add syslog_socket API extension
- doc/howto: Explain how to use core.syslog_socket for OVN
- Update metadata
- test: Add syslock socket test
- lxd/drivers/zfs: supported zfs versions all have ācompressā support
- lxd/drivers/zfs: supported zfs versions all have āvolmode=noneā
- lxd/drivers/zfs_utils: drop slow path for unsupported zfs 0.6 in setDatasetProperties()
- grafana: add Loki logs section with lifecycle and logging events
- lxc/operation.go: Add missing flag all-projects for command operation list
- i18n: Update translation templates
- shared/api/event: Add support for OVN logs in lxc monitor --pretty
- docs: Improve OVN syslog integration setup steps
Downloads
The release tarballs can be found on our download page.
Binary builds are also available for:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc