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

Incus 0.5 est maintenant disponible

26 janv. 2024

Introduction

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

C’est notre première version de l’année 2024, et elle est assez chargée ! C’est aussi la première version qui n’intègre aucun changement de LXD, depuis leur décision de passer en AGPLv3.

Cette version présente de nombreuses améliorations dans la CLI d’Incus, de nouvelles fonctionnalités pour les machines virtuelles, plus d’options pour gérer les évacuations dans les clusters et les extinctions de serveurs, et beaucoup d’autres nouvelles fonctionnalités et améliorations !

De plus, nous avons corrigé un grand nombre de bugs et apporté des améliorations dans notre base de données, ce qui devrait se traduire par une amélioration notable des performances d’Incus, notamment pour les clusters.

image|690x459

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

Points marquants

Ansible, Terraform/OpenTofu et Packer

Au cours des derniers mois, le support d’Incus s’est beaucoup développé dans ces outils !

Paquets pour les distributions Linux

Depuis la dernière version d’Incus, des paquets supplémentaires sont désormais disponibles pour :

  • Arch Linux
  • Debian (testing/unstable)
  • Ubuntu (noble)
  • Void Linux

Vous trouverez toutes les instructions dans notre guide d’installation.

Traductions

Nous avons passé du temps à nettoyer les traductions et à configurer Weblate pour Incus.
Il est maintenant plus facile que jamais de traduire l’outil en ligne de commande Incus dans votre langage en vous connectant à Weblate.
Tous les changements sont automatiquement soumis sur Github.

État de la traduction

Notes de mise à jour

Entrées subuid/subgid

Un bug de longue date dans le parseur idmap ignorait toutes les entrées de l’utilisateur root dans /etc/subuid et /etc/subgid, à l’exception de la première entrée suffisamment grande.

Cela posait des problèmes aux quelques utilisateurs qui avaient une raison légitime de diviser leur allocation d’uid/gid en deux, principalement pour de l’authentification à distance sur le système hôte.

Le bug a été résolu, mais la résolution a pour effet secondaire de faire échouer le lancement des conteneurs Incus sur les systèmes avec une configuration subuid/subgid invalide.

Si vous remarquez que vos conteneurs ne démarrent plus, vérifiez les fichiers /etc/subuid et /etc/subgid et assurez-vous qu’il y a au moins une entrée pour l’utilisateur root suffisamment large (au moins 65536 uid/gid). Plus important encore, assurez-vous qu’il n’y a aucun conflit ou chevauchement dans les allocations de l’utilisateur root.

Dans la plupart des cas, le plus simple est de supprimer toutes les entrées pour root de ces fichiers et de les remplacer par une entrée très large :

root:1000000:1000000000

Nouvelles fonctionnalités

Nouvelle commande incus file create

Une nouvelle commande incus file create a été ajoutée pour créer facilement des fichiers vierges, des liens symboliques, et des répertoires, sans avoir à transférer une arborescence existante.

stgraber@dakara:~$ incus file create demo/root/file
stgraber@dakara:~$ incus file create --type=symlink demo/root/symlink /etc/hosts
stgraber@dakara:~$ incus file create --type=directory demo/root/dir
stgraber@dakara:~$ incus exec demo -- ls -lh /root
total 2.5K
drwxr-xr-x 2 root root  2 Jan 26 03:38 dir
-rw-r--r-- 1 root root  0 Jan 26 03:37 file
lrwxrwxrwx 1 root root 10 Jan 26 03:38 symlink -> /etc/hosts
Nouvelle commande incus snapshot show

Une nouvelle commande incus snapshot show permet de consulter facilement les données de configuration contenues dans un instantané d’instance Incus.

Pour rappel, les instantanés d’Incus ne contiennent pas uniquement l’état du système de fichiers, mais également toute la configuration de l’instance (clefs de configuration, périphériques…) au moment de la prise de l’instantané.

stgraber@dakara:~$ incus snapshot create demo s1
stgraber@dakara:~$ incus snapshot list demo
+------+----------------------+----------------------+----------+
| NAME |       TAKEN AT       |      EXPIRES AT      | STATEFUL |
+------+----------------------+----------------------+----------+
| s1   | 2024/01/25 22:39 EST | 0000/12/31 19:03 LMT | NO       |
+------+----------------------+----------------------+----------+
stgraber@dakara:~$ incus snapshot show demo s1
expires_at: 0001-01-01T00:00:00Z
architecture: x86_64
config:
  image.architecture: amd64
  image.description: Ubuntu jammy amd64 (20240125_07:42)
  image.os: Ubuntu
  image.release: jammy
  image.serial: "20240125_07:42"
  image.type: squashfs
  image.variant: default
  volatile.base_image: f9e9abeb4fc8691edf48078616a1aae628c6d5938b715e361c6b47cda0474679
  volatile.cloud-init.instance-id: f724feba-245a-424b-bc51-43167258dc2a
  volatile.eth0.host_name: vethecbb346e
  volatile.eth0.hwaddr: 00:16:3e:06:67:f0
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: 8b8a1c75-977b-4197-9ad7-507b899432e9
  volatile.uuid.generation: 8b8a1c75-977b-4197-9ad7-507b899432e9
created_at: 2024-01-26T03:39:09.583020489Z
devices: {}
ephemeral: false
expanded_config:
  image.architecture: amd64
  image.description: Ubuntu jammy amd64 (20240125_07:42)
  image.os: Ubuntu
  image.release: jammy
  image.serial: "20240125_07:42"
  image.type: squashfs
  image.variant: default
  volatile.base_image: f9e9abeb4fc8691edf48078616a1aae628c6d5938b715e361c6b47cda0474679
  volatile.cloud-init.instance-id: f724feba-245a-424b-bc51-43167258dc2a
  volatile.eth0.host_name: vethecbb346e
  volatile.eth0.hwaddr: 00:16:3e:06:67:f0
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: 8b8a1c75-977b-4197-9ad7-507b899432e9
  volatile.uuid.generation: 8b8a1c75-977b-4197-9ad7-507b899432e9
expanded_devices:
  eth0:
    name: eth0
    network: incusbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
last_used_at: 0001-01-01T00:00:00Z
name: s1
profiles:
- default
stateful: false
size: 53760
Plus d’options de complétion des commandes

Nous transitionnons lentement d’un script de complétion bash pour incus écrit à la main à une manière beaucoup plus dynamique de gérer la complétion.

Les profils de base pour la complétion des commandes peuvent être obtenus avec :

  • incus completion bash
  • incus completion fish
  • incus completion powershell
  • incus completion zsh

Pour les utilisateurs de bash, il est probablement plus intéressant de continuer à utiliser le script écrit à la main pour l’instant, mais nous espérons que les nouveaux profils générés dynamiquement prendront le relais dans une version ou deux.

Prise en charge de plusieurs binaires d’agents pour les machines virtuelles

Il est maintenant possible pour Incus de fournir plusieurs versions binaires de l’agent à ses machines virtuelles.

La fonctionnalité est utile dans deux scénarios :

  • Gestion de plusieurs systèmes d’exploitation
  • Gestion de plusieurs architectures

À ce stade, l’accent est mis sur le second point. Avec cette fonctionnalité, vous pouvez désormais lancer des machines virtuelles 32 bits sur votre système et les faire récupérer une version 32 bits de l’agent.

stgraber@castiana:~$ incus exec debian32 bash
root@debian32:~# uname -a
Linux debian32 6.1.0-17-686-pae #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) i686 GNU/Linux
root@debian32:~# 
exit
stgraber@castiana:~$ incus exec debian32 bash
root@debian32:~# uname -m
i686
root@debian32:~# mount -t 9p agent /mnt
root@debian32:~# ls -lh /mnt
total 34M
-rwxr-xr-x 1 root root 17M Jan 24 10:10 incus-agent.linux.i686
-rwxr-xr-x 1 root root 18M Jan 24 10:10 incus-agent.linux.x86_64
Prise en charge de virtio-blk en tant qu’io.bus disque

Après l’ajout du support NVME dans Incus 0.2, nous étendons ce mécanisme pour proposer virtio-blk comme bus d’E/S disque dans nos machines virtuelles.

Pour l’utiliser, définissez la propriété io.bus du périphérique disk à virtio-blk.

stgraber@dakara:~$ incus launch images:debian/12 demo --vm
Launching demo
stgraber@dakara:~$ incus storage volume create default demo size=5GiB --type=block
Storage volume demo created
stgraber@dakara:~$ incus config device add demo extra disk pool=default source=demo io.bus=virtio-blk
Device extra added to demo
stgraber@dakara:~$ incus exec demo bash
root@demo:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   10G  0 disk 
├─sda1   8:1    0  100M  0 part /boot/efi
└─sda2   8:2    0  3.9G  0 part /
vda    253:0    0    5G  0 disk
Prise en charge du passthrough de périphériques réseau USB dans les VM

Lors de l’utilisation de nictype=physical pour une machine virtuelle dont le périphérique réseau parent est connecté sur un bus USB, Incus interprétera désormais en interne la situation comme un passthrough de périphérique USB vers la machine virtuelle.

stgraber@castiana:~$ incus launch images:debian/12 demo --vm
Launching demo
stgraber@castiana:~$ incus config device add demo eth1 nic nictype=physical parent=enx207bd2a0f9eb
Device eth1 added to demo
stgraber@castiana:~$ incus exec demo bash
root@demo:~# apt install usbutils
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libusb-1.0-0
The following NEW packages will be installed:
  libusb-1.0-0 usbutils
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 142 kB of archives.
After this operation, 492 kB of additional disk space will be used.
Do you want to continue? [Y/n]·
Get:1 http://deb.debian.org/debian bookworm/main amd64 libusb-1.0-0 amd64 2:1.0.26-1 [62.6 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 usbutils amd64 1:014-1 [79.7 kB]
Fetched 142 kB in 1s (124 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libusb-1.0-0:amd64.
(Reading database ... 20425 files and directories currently installed.)
Preparing to unpack .../libusb-1.0-0_2%3a1.0.26-1_amd64.deb ...
Unpacking libusb-1.0-0:amd64 (2:1.0.26-1) ...
Selecting previously unselected package usbutils.
Preparing to unpack .../usbutils_1%3a014-1_amd64.deb ...
Unpacking usbutils (1:014-1) ...
Setting up libusb-1.0-0:amd64 (2:1.0.26-1) ...
Setting up usbutils (1:014-1) ...
Processing triggers for libc-bin (2.36-9+deb12u3) ...
root@demo:~# lsusb -tv
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 4: Dev 2, If 0, Class=Communications, Driver=cdc_ncm, 5000M
        ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
    |__ Port 4: Dev 2, If 1, Class=CDC Data, Driver=cdc_ncm, 5000M
        ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
root@demo:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:e7:f7:2d brd ff:ff:ff:ff:ff:ff
3: enx207bd2a0f9eb: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 20:7b:d2:a0:f9:eb brd ff:ff:ff:ff:ff:ff
Nouvelles options d’évacuation de cluster (force-stop et stateful-stop)

Quelques nouvelles options d’évacuation de cluster ont été ajoutées.

Celles-ci peuvent être sélectionnées pour chaque instance via la clef de configuration cluster.evacuate.

force-stop provoque l’arrêt immédiat de l’instance sans lui donner la possibilité de s’arrêter proprement. Cela n’a de sens que dans les cas où l’instance est effectivement sans état, puisqu’un tel arrêt ne permet pas de stocker un quelconque état sur le disque.

stateful-stop sauvegarde l’état de l’instance sur le disque avant son arrêt. À la restauration de l’instance, son état est également restauré, lui permettant de reprendre les opérations là où elle s’était arrêtée.
Cette option est actuellement principalement destinée aux machines virtuelles, car la préservation de l’état des conteneurs est assez complexe à réaliser.

Configuration de l’arrêt des instances à l’arrêt de l’hôte

Une nouvelle clef de configuration pour les instances, boot.host_shutdown_action, a été introduite. Les valeurs acceptées sont :

  • stop (comportement d’arrêt classique)
  • force-stop (voir ci-dessus)
  • stateful-stop (voir ci-dessus)

Cela permet notamment de configurer certaines machines virtuelles de telle sorte que leurs états soient sauvegardés à l’extinction de l’hôte et restaurés à son redémarrage.

Démarrage automatique des instances à leur création

Une petite optimisation de notre API permet désormais de démarrer les instances dans la même requête qui sert à leur création, économisant un appel à l’API et simplifiant les interactions par des scripts tiers.

incus launch utilise désormais cette fonctionnalité.

Configuration du nom de l’instance Loki

Incus ajoute un ensemble de labels aux événements envoyés à Loki.

Parmi ceux-ci figurent instance et location. Attention, ici, instance correspond au producteur des données envoyées à Loki, pas à une instance Incus.

Jusqu’à présent, les deux labels ne différaient que dans le cas improbable où un serveur aurait transféré un événement provenant d’un autre serveur dans un cluster.

Néanmoins, dans des environnements en cluster, il semble pertinent de pouvoir fournir à Loki le nom des clusters, de telle sorte que l’on puisse filtrer facilement les informations par cluster.

À cette fin, nous avons ajouté une clef de configuration du serveur, loki.instance, qui remplace la valeur du label instance lorsqu’elle est définie.

Le tableau de bord Grafana par défaut a également été mis à jour pour pouvoir filtrer les événements, en considérant que le label instance de Loki correspond au nom du job Prometheus.

Support étendu de la méthode HEAD sur les fichiers

La méthode HEAD de l’API de gestion des fichiers d’Incus retourne à présent la taille des fichiers dans l’en-tête Content-Length.

L’intérêt premier de cet ajout est de permettre à des outils se basant sur l’API de gestion des fichiers d’Incus (par exemple, un explorateur de fichiers) d’afficher non seulement les noms et les types des fichiers ordinaires, mais également leurs tailles.

Utilisation de /run/incus pour les données d’exécution

Jusqu’à présent, Incus stockait une partie de ses données d’exécution dans ses répertoires de journaux, sous /var/log/incus/. Outre le fait que ce n’était clairement pas le bon emplacement pour ces données, cela causait des problèmes avec les systèmes qui font des rotations agressives de journaux.

Pour résoudre ce problème, Incus 0.5 placera désormais ses données d’exécution dans /run/incus, réservant /var/log/incus aux fichiers de journaux uniquement.

Dans le futur, nous déplacerons probablement une partie des données de /var/lib/incus vers /run/incus.

Liste complète des changements

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

Liste complète des commits
  • incusd/instances/qemu: Don't fail event sending on missing agent
  • incusd/network/ovsdb: Properly close the connections
  • doc: Add Fedora installation instructions
  • incusd/network/ovn: Use Mutate instead of Update
  • incusd/network/ovs: Port BridgeDelete to OVSDB
  • incusd/network/ovs: Port BridgeAdd to OVSDB
  • incusd/network/ovs: Port BridgePortAdd to OVSDB
  • incusd/network/ovn: Port LogicalSwitchPortIPs to OVSDB
  • incus-doc: Don't try to guess types
  • doc: Update configs
  • doc/installing: Add Arch instructions
  • lxd-to-incus: Clarify error messages
  • doc/installing: Fix chocolatey link
  • doc: Remove MicroCloud references
  • incusd/network/ovn: Properly check transactions
  • incusd/network/ovs: Properly check transactions
  • incusd/network/ovn: Fix ChassisGroupChassisAdd
  • incusd/network/ovn: Fix BridgeAdd
  • incusd/network/ovn: Properly handle uplink with disabled DHCP/DHCPv6
  • incus: Create config paths when no local daemons
  • lxd-to-incus: Support alternative snap path
  • incusd/device/pci: Detect USB bus
  • incusd/device/nic: Support USB parents for physical NICs in VMs
  • internal/instance: Add new volatile keys
  • incusd/instance/qemu: Fix typo
  • incusd/instance/qemu: Handle USB NIC hotremove
  • incusd/networks: Don't Fill network configs when joining
  • incus/create: Set Target after network/storage lookup
  • doc/architectures: Add missing entries
  • doc/architectures: Re-phrase headers
  • doc/architectures: Fix typo
  • doc/architectures: Add note about VM architectures
  • doc/wordlist: Add Loongarch
  • doc/migrate_lxd: Add mention of CLI configuration
  • incus/snapshot: Fix format handling in list
  • incus/snapshot: Add show sub-command
  • i18n: Update translation templates
  • incus: Enable cobra's completion support
  • lxd-to-incus: Handle local OVN
  • incusd/storage_pools: Don't crash on nil pool
  • incusd/instance/lxc: Re-generate lxc.conf during Exec
  • incusd/instance/qemu: Add ErrExecDisconnected
  • incusd: Make VM shutdown/reboot exit cleanly
  • lxd-to-incus: Fix incorrect directory name
  • lxd-to-incus: Detect source daemon using symlink path
  • lxd-to-incus: Remove trailing slashes from paths
  • lxd-to-incus: touch completion file after migration
  • incusd: Refresh the state on cluster put/join
  • Makefile: Don't complain about shellcheck version
  • golangci: Disable confusing-results
  • shared/idmap: Remove Extend
  • shared/idmap: Return all idmaps in DefaultIdmapSet
  • shared/idmap: Split idrange
  • shared/idmap: Split idmapset
  • shared/idmap: Split idmap
  • shared/idmap: Split ByHostid
  • shared/idmap: Export non-Linux specific logic
  • shared/idmap: Cleanup IdmapSet
  • shared/idmap: Rename IdRange to IDRange
  • shared/idmap: Cleanup IdmapEntry
  • shared/idmap: Rename is_between to isBetween
  • shared/idmap: Rename ByHostID and make it use IdmapSet
  • shared/idmap: Update idmapset for modern standard
  • shared/idmap: Rename the files
  • shared/idmap: Move ByHostID back into set
  • shared/idmap: Rename IdmapEntry to Entry
  • shared/idmap: Rename IDRange to Range
  • shared/idmap: Rename IdmapSet to Set
  • shared/idmap: Fix import shadowing
  • shared/idmap: Rename VFS3Fscaps to VFS3FSCaps
  • shared/idmap: Add/tweak export function descriptions
  • shared/idmap: Properly capitalize
  • shared/idmap: Rename UIDShift to Shift
  • shared/idmap: Update kernelDefaultMap to return multiple maps
  • shared/idmap: Update comments
  • shared/idmap: Add FilterPOSIX
  • shared/idmap: Introduce NewSetFromIncusIDMap
  • shared/idmap: Introduce NewSetFromJSON
  • shared/idmap: Replace JSONMarshal with ToJSON
  • shared/idmap: Introduce set_sort
  • shared/idmap: Always use pointer receiver
  • shared/idmap: Move remaining loaders to set_load
  • shared/idmap: Run tests on all platforms
  • shared/idmap: Introduce DefaultFullKernelSet
  • shared/idmap: Introduce NewSetFromCurrentProcess
  • shared/idmap: Remove GetSet
  • shared/idmap: Introduce NewSetFromSystem
  • shared/idmap: Remove kernelDefaultMap
  • shared/idmap: Add Clone to Entry
  • shared/idmap: Add Split to Set
  • shared/idmap: Replace Shift functions with ShiftPath/UnshiftPath
  • fuidshift: Update for idmap changes
  • incusd: Update for idmap changes
  • incus-user: Don't set raw.idmap when uid/gid aren't in system map
  • shared/idmap: Add Includes to Set
  • incusd: Simplify idmap serialization
  • incusd/instance/lxc: Detect bad idmap and find new one
  • shared/cliconfig: Improve error handling
  • incusd/instance/qemu: Don't hardcode UEFI firmware in checkFeatures
  • incusd/firewall/xtables: Fix iptablesClear on nft shim
  • incus/network: add dynamic completions
  • shared/idmap: Fix typo in comments
  • incus/project: Get current project from connection info
  • incusd/cluster: Ensure the cluster member config is always sorted
  • Update madmin-go to support loong64
  • server/seccomp: Add loongarch64
  • shared/cgo: Add loongarch64
  • shared/idmap: Don't change the json format
  • shared/idmap: Document AddSafe and fix double records
  • incusd: Update instance_test for shared/idmap fix
  • incusd/instance/file: Add type and size to HEAD
  • shared/idmap: Fix typo in comment
  • api: disk_io_bus_virtio_blk
  • doc: Add virtio-blk as option to io.bus
  • incusd/device/disk: Add virtio-blk
  • incusd/instance/qemu: Add virtio-blk support
  • Move db backup functions to ClusterTx
  • Move db image functions to ClusterTx
  • Move db instance functions to ClusterTx
  • Move db network ACL functions to ClusterTx
  • Move db network forward functions to ClusterTx
  • Move db network load balancer functions to ClusterTx
  • Move db network peer functions to ClusterTx
  • Move db profile functions to ClusterTx
  • Move db network zone functions to ClusterTx
  • Move db network functions to ClusterTx
  • Move db snapshot functions to ClusterTx
  • Move db storage bucket functions to ClusterTx
  • Move db storage pool functions to ClusterTx
  • Move db volume snapshot functions to ClusterTx
  • Move db storage volume functions to ClusterTx
  • Move db warning functions to ClusterTx
  • cmd/incusd: Fix bulk unfreezing
  • cmd/incus: Add resume command
  • i18n: Update translations
  • incusd/loki: Replace complex backoff with simple loop
  • gomod: Update dependencies
  • incus-agent: Handle built-in vsock module
  • gomod: Update dependencies
  • README: Re-introduce weblate
  • incusd/network/acl: Avoid nested DB transactions
  • incusd/instance/qemu: Start using seabios as CSM firmware
  • incusd/forknet: Handle wifi detach
  • doc/CONTRIBUTING: Fix incorrect comamnd paths
  • i18n: Manual update to french translation
  • i18n: Update translation templates
  • Translated using Weblate (French)
  • tests: Add license check
  • Revert "Update madmin-go to support loong64"
  • gomod: Update dependencies
  • incusd: Correctly update event location
  • incusd/events: Upgrade to websocket as late as possible
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • api: loki_config_instance
  • incusd/config: Add loki.instance
  • incusd/loki: Add support for overriding instance name
  • incusd: Add support for loki.instance
  • doc: Update configs
  • grafana: Add instance filters for Loki
  • incusd/loki: Fix variable shadowing
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • cmd/incusd/api_cluster: Join cluster transactions
  • i18n: Remove empty translations
  • api: instance_create_start
  • shared/api: Add Start to InstnacesPost
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance: Add support for Start property
  • incus/launch: Use the Start property
  • i18n: Update translation templates
  • doc: Updates Windows install with Winget instructions
  • doc: Add Winget to wordlist
  • incusd/migration: Properly forward errors
  • cmd/incus: Get owner mode only if --gid or --uid is unset
  • cmd/incus: Add incus file create subcommand
  • test: Add tests for incus file create
  • i18n: Update translation templates
  • Translated using Weblate (Japanese)
  • Add note about scrape_interval and update examples
  • cmd/incus: Remove unused flagContent variable in incus file create
  • build(deps): bump actions/dependency-review-action from 3 to 4
  • incusd/storage_volumes: Properly target refreshes
  • incusd/storage_volumes: Use a single POST handler
  • lxd-to-incus: Use Incus API client for LXD
  • lxd-to-incus: Handle non-string LXD configs
  • lxd-to-incus: Remove separate go package
  • lxd-to-incus: Fix various issues
  • Makefile: Update for lxd-to-incus
  • gomod: Update dependencies
  • incus/alias: Make default aliases visible
  • incus: Mention aliases in help message
  • i18n: Update translation templates
  • incus: Handle non-existent home directory
  • lxd-to-incus: Don't export internal functions
  • lxd-to-incus: Fix error checking
  • lxd-to-incus: Check that casting succeeded
  • lxd-to-incus: Fix typo
  • lxd-to-incus: Fix variable shadowing
  • lxd-to-incus: Remove spurious printf
  • lxd-to-incus: Add required comments
  • lxd-to-incus: Simplify presence checks
  • lxd-to-incus: Use field names in DottedVersion
  • internal/util: Re-order path functions
  • internal/util: Add RunPath
  • incusd/sys: Add runtime directory
  • incusd/seccomp: Move seccomp.socket to /run
  • incusd/instance_logs: Drop conf files
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance/common: Add RunPath
  • incusd/instance/lxc: Move lxc.conf
  • incusd/instance/qemu: Move qemu.conf
  • doc: Update qemu.conf path
  • incusd/apparmor: Add runtime directory
  • incusd/instance/utils: Cleanup runtime path
  • incusd/instance/lxc: Move files to runtime path
  • incusd/instance/qemu: Move files to runtime path
  • incusd/patches: Move files to runtime directory
  • incusd/instance/qemu: Move agent loader to separate files
  • incusd/apparmor/qemu: Remove mention of userns
  • incusd/instance/qemu: Make config drive name configurable
  • incusd/instance/qemu: Add new agent share
  • incusd/apparmor/qemu: Allow access to agent path
  • doc: Add INCUS_AGENT_PATH
  • incusd/instance/qemu: Only expose config/agent drives over 9p
  • incusd/instance/qemu/agent-loader: Remove virtiofs
  • doc/getting_started: Point users to installing guide
  • doc/installing: Cleanup distro instructions
  • api_cluster: Optimize db transactions
  • daemon_images: Optimize db transactions
  • daemon_storage: Optimize db transactions
  • images: Optimize db transactions
  • storage_volumes_snapshot: Optimize db transactions
  • instance/drivers: Optimize db transactions
  • driver_ovn: Optimize db transactions
  • network/acl: Optimize db transactions
  • network/zone: Optimize db transactions
  • storage_volumes: Optimize db transactions
  • incusd/instance/qemu: Add some ArchLinux EDK2 filenames
  • api_internal: Remove unreachable code
  • doc/installing: Add Void Linux
  • internal/instance: Don't use the node terminology
  • doc: Update configs
  • api: clustering_evacuation_stop_options
  • internal/instance: Extend cluster.evacuate
  • incusd/cluster: Add evacuation mode validation
  • incusd/instance: Use a string for CanMigrate
  • incusd/cluster: Update for CanMigrate
  • incusd/cluster: Add stateful-stop and force-stop
  • doc: Update configs
  • api: boot_host_shutdown_action
  • internal/instance: Add boot.host_shutdown_action
  • doc: Update configs
  • scripts/bash: Add boot.host_shutdown_action
  • incusd/project: Add boot.host_shutdown_action
  • incusd/instances: Add support for boot.host_shutdown_action
  • incusd/instance: Fallback to stateless start when no state available
  • internal/archive: Fix squashfs error handling
  • gomod: Update dependencies

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/0.5

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

À ce stade, chaque version d’Incus ne sera supportée que jusqu’à la sortie de la suivante. Cela changera dans quelques mois, car nous prévoyons de sortir une version LTS qui coïncidera avec les versions LTS de LXC et LXCFS.

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