Retour à l’aperçu de l’actualité

Incus 6.9 est maintenant disponible

24 janv. 2025

Introduction

Bonne année !

L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.9 !

Il s’agit d’une version un peu plus légère en raison des vacances, mais elle offre tout de même quelques fonctionnalités supplémentaires intéressantes en plus de la dose habituelle de corrections de bugs.

image|690x429

Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/

Nouvelles fonctionnalités

ACL réseau par instance pour les réseaux de type bridge

Les ACL réseau peuvent maintenant être directement appliquées aux instances tournant sur un réseau managé de type bridge, si le système utilise nft pour ses règles de pare-feu (cela peut être vérifié avec incus info).

Cela permet de faire de la micro-segmentation réseau en permettant à des instances sur le même bridge d’avoir des règles de pare-feu individuelles en ingress/egress.

Les ACL réseau peuvent être créées et gérées avec incus network acl, puis appliquées aux interfaces réseau idoines en utilisant la clef de configuration security.acls.

Documentation des ACL : https://linuxcontainers.org/incus/docs/main/howto/network_acls/
Documentation des bridges : https://linuxcontainers.org/incus/docs/main/reference/network_bridge/
Documentation des interfaces réseau : https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#nic-bridged

Améliorations du scriptlet QEMU

Le scriptlet QEMU a été davantage amélioré dans cette version.

Tous les appels du scriptlet fournissent désormais un objet décrivant l’instance, permettant d’accéder à sa configuration, aux profils qu’elle utilise…

Un nouveau hook config, qui est lancé avant le démarrage de QEMU, a également été ajouté.
Ce hook ne peut pas être utilisé pour envoyer des commandes QMP, mais il permet d’appeler de nouvelles fonctions pour modifier la configuration (arguments en ligne de commande ou fichier .conf) de QEMU :

  • get_qemu_cmdline
  • set_qemu_cmdline
  • get_qemu_conf
  • set_qemu_conf

Documentation: https://linuxcontainers.org/incus/docs/main/reference/instance_options/#advanced-use

Dumps de mémoire pour les VM

Une nouvelle commande incus debug memory-dump et son API associée ont été ajoutées pour fournir un moyen simple de récupérer un dump mémoire d’une machine virtuelle.

Les VM Incus exposent désormais un périphérique additionnel permettant aux instances Windows de fournir des informations de débogage mémoire et de produire un dump mémoire chargeable dans le débogueur Windows.

stgraber@dakara:~$ incus launch images:debian/12 v1 --vm
Launching v1
stgraber@dakara:~$ incus debug dump-memory v1 debug --format=elf
stgraber@dakara:~$ file debug
debug: ELF 64-bit LSB core file, x86-64, version 1 (SYSV), SVR4-style

Il est désormais possible de récupérer les adresses IPv4 et IPv6 d’uplink directement depuis incus network info.

stgraber@athos:~# incus network info default
Name: default
MAC address: 00:16:3e:8d:51:b6
MTU: 1500
State: up
Type: broadcast

IP addresses:
  inet   10.22.45.1/24 (link)
  inet6  2602:fc62:b:8006::1/64 (link)

Network usage:
  Bytes received: 0B
  Bytes sent: 0B
  Packets received: 0
  Packets sent: 0

OVN:
  Chassis: delmak
  Logical router: incus-net13-lr
  IPv4 uplink address: 172.17.200.106
  IPv6 uplink address: 2602:fc62:b:200::106

Création de volumes de stockage depuis le fichier de preseed du serveur

Il est maintenant possible de définir des volumes de stockage initiaux directement dans le fichier de preseed du serveur.
Cette fonctionnalité est pratique pour notamment définir des volumes partagés et des profils qui les utilisent, le tout dans le fichier de preseed. Il est également possible de définir des volumes pour les images Incus ou le stockage des sauvegardes.

Documentation : https://linuxcontainers.org/incus/docs/main/howto/initialize/#configuration-format

Ajout d’une description dans les commandes create

Toutes les commandes create ont à présent une option --description qui peut être utilisée pour définir la description de l’objet créé.

stgraber@dakara:~$ incus profile create foo --description "Example profile"
Profile foo created
stgraber@dakara:~$ incus profile list
+---------+-----------------------+---------+
|  NAME   |      DESCRIPTION      | USED BY |
+---------+-----------------------+---------+
| default | Default Incus profile | 6       |
+---------+-----------------------+---------+
| foo     | Example profile       | 0       |
+---------+-----------------------+---------+

Liste complète des changements

Voici une liste complète de tous les changements apportés par cette version :

Liste complète des commits
  • Translated using Weblate (Japanese)
  • incusd/scriptlet: Refactor load package
  • incusd/scriptlet: Add support for checking optional functions and improve error messages
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • incusd/storage/drivers: Force blkdiscard and ignore errors
  • incusd/auth: fix FGA online data race
  • incusd/storage/drivers: Log on blkdiscard failure
  • incusd/storage: Add storage volume db entries when storage is changed
  • client: Propagate HTTP TLS dialer to websocket
  • api: network_ovn_state_addresses
  • shared/api: Expand OVN state with uplink addresses
  • doc/rest-api: Refresh swagger YAML
  • internal/server: Add uplink addresses to ovn state
  • incus/network/info: Add uplink addresses for ovn network
  • i18n: Update translation templates
  • incus: Add --description flag to create commands
  • i18n: Update translation templates
  • tests: Add tests for --description flag on create commands
  • incusd/scriptlet: Fix qemu_hook required argument
  • doc: Fix qemu_hook required argument
  • Add simple shell.nix
  • client: Add proxy host to skopoe calls
  • incusd/cluster: Add missing error handling
  • incusd/cluster: Clarify error on DB failure
  • incusd/instance/qemu: Fix QMP arguments typing
  • incusd/instance/qemu: QEMU device naming consistency
  • Encode mc alias for storage buckets to match allowed characters
  • doc: Contributing section restructuring
  • incusd/network/ovn: Allow creation of OVN network with no uplink
  • incusd/network/ovn: Handle missing logical router in state
  • Translated using Weblate (Chinese (Simplified Han script))
  • Translated using Weblate (Chinese (Simplified Han script))
  • lxd-to-incus: Clear volatile.uuid from instances
  • Translated using Weblate (Chinese (Simplified Han script))
  • Translated using Weblate (Chinese (Simplified Han script))
  • Added translation using Weblate (Chinese (Traditional Han script))
  • Translated using Weblate (Chinese (Traditional Han script))
  • Translated using Weblate (Chinese (Simplified Han script))
  • github: Bump most workflows to 24.04
  • github: Split testsuite to separate action
  • github: Add aarch64 tests
  • tests: Skip nftables test on old kernels
  • Added translation using Weblate (Tamil)
  • shared/util: Add IsNoneOrEmpty
  • incusd/network/bridge: Tweak dnsmasq startup condition
  • shared/cgo: Add finalize_userns
  • shared/cgo: Export in_same_namespace
  • incusd/main_forkproxy: Join all namespaces at once
  • incusd/main_forkfile: Join all namespaces at once
  • internal/linux: Add ClearBlock
  • incusd/storage: Switch to linux.ClearBlock
  • internal/linux/discard: Remove leftover debugging
  • internal/linux/discard: Use marker length for buffer
  • internal/linux/discard: Add support for offset
  • incusd/storage/generic: Pass offset to ClearBlock
  • incusd/storage/lvm: Discard the new blocks on resize
  • incusd/storage/lvm: Run ClearBlock on all new thick block volumes
  • cmd: support header line for csv output
  • cmd: update --format flag description
  • i18n: Update translation templates
  • cmd: add validation for --format flag
  • doc: fix ref for vendor-data
  • devcontainer: initial version
  • Makefile: add target for unit tests as root
  • Makefile: add missing installations for gotags and openfga
  • incusd/network/ovn: Skip remote peers when iterating peer networks
  • incusd/storage/lvm: Move resize clearing to SetVolumeQuota
  • incusd/storage: Make use of qemu-img's target-is-zero option
  • incusd/device/disk: Remove virtfs-proxy-helper dependency
  • tests: Remove 9p proxy driver
  • incusd/instance: Split startupHook function
  • incusd/main_cluster: Tweak to have help refer to correct command name
  • incusd/instance: Pass an *api.Instance to the scriptlet program
  • incusd/scriptlet/qemu: Add instance parameter to the QEMU scriptlet
  • incusd/instance: Rewire QEMU config generation
  • incusd/instance: Make QEMU config types public
  • incusd/scriptlet/qemu: Fix Starlark function name
  • incusd/scriptlet/qemu: Prevent calling QMP functions at config stage
  • incusd/device/disk: Better handle partitions
  • Fixed link to point to correct manpage.
  • lxd-to-incus: Be more lenient on database changes
  • incusd/storage/drivers: Handle 4k sector sizes
  • incusd/dnsmasq: Don't put the project name in the DNS record
  • incusd/device/disk: disable 9p if idmap requested
  • incusd/scriptlet/qemu: Add QEMU configuration getters
  • incusd/scriptlet/qemu: Add QEMU configuration setters
  • api: qemu_scriptlet_config
  • doc/ref/instance_options: Update QEMU scriptlet documentation
  • incusd/instance: Update unit test
  • incusd/instance/drivers: Introduce ReloadDevice
  • api: network_bridge_acl_devices
  • incusd/device/nic: ACL support for bridge NIC device
  • incusd/server/firewall: ACL for bridge NIC device
  • doc/device/nic: Add ACL support to bridge NICs
  • doc/network_acl: Document usage with bridged NICs
  • tests: nftable test with ACL rules
  • github: Switch to Github's hosted arm64 runners
  • doc: typo
  • doc: Updated storage_zfs.md
  • incusd/device/disk: Update correct mount options
  • incus/file/pull: Port to SFTP
  • i18n: Update translation templates
  • api: instance_debug_memory
  • incusd/instances/qemu: Add vmcoreinfo device
  • incusd/instances/qemu: Add dump-guset-memory implementation for instance memory debugging
  • incusd: Add GET /1.0/instances/NAME/debug/memory
  • doc/rest-api: Refresh swagger YAML
  • client: Add API implementation for instance memory debugging
  • incus: Add "debug dump-memory" command
  • i18n: Update translation templates
  • doc: Force white background for swagger API
  • gomod: Update dependencies
  • api: init_preseed_storage_volumes
  • client: Add storage volume initialization
  • shared/api: Add storage volume initialization
  • doc: Include storage initialization example
  • doc/rest-api: Refresh swagger YAML
  • tests: Include storage volume to init test
  • incusd/instance/qemu: Fix device_id warning on 9.2.x
  • incus: Fix example description for debug dump-memory command
  • i18n: Update translation templates

Documentation

La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/

Paquets

Incus ne fournit pas de paquet d’installation mais bien un tarball à chaque version. Vous trouverez ci-dessous différentes solutions pour mettre Incus en service.

Installation du serveur Incus sous Linux

Incus est disponible sur la plupart des distributions Linux courantes. Vous trouverez des instructions d’installation détaillées dans notre documentation.

https://linuxcontainers.org/incus/docs/main/installing/

Paquet Homebrew du client Incus

Le client Incus est disponible sur Homebrew pour Linux et macOS.

https://formulae.brew.sh/formula/incus

Paquet Chocolatey du client Incus

Le client Incus est disponible sur Chocolatey pour les utilisateurs de Windows.

https://community.chocolatey.org/packages/incus/6.9.0

Paquet Winget du client Incus

Le client Incus est aussi disponible sur Winget pour les utilisateurs de Windows.

https://winstall.app/apps/LinuxContainers.Incus

Support

Les versions de fonctionnalité d’Incus ne sont supportées que jusqu’à la sortie de la suivante. Les personnes souhaitant un support plus long et des changements moins fréquents devraient plutôt envisager d’utiliser Incus 6.0 LTS.

Le support communautaire est disponible sur : https://discuss.linuxcontainers.org
Un support commercial est disponible sur : https://zabbly.com/incus
Les bugs peuvent être signalés sur : https://github.com/lxc/incus/issues