Retour à l’aperçu de l’actualité
Incus 6.2 est maintenant disponible¶
31 mai 2024
Introduction¶
L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.2 !
Cette version contient la deuxième vague de contributions des étudiants de l’Université du Texas à Austin ainsi que quelques autres fonctionnalités et améliorations.
Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/
Nouvelles fonctionnalités¶
Nouvelle commande incus top
¶
Une nouvelle commande incus top
a été ajoutée. Elle utilise l’endpoint OpenMetrics d’Incus et permet de consulter en temps réel des statistiques sur les instances, notamment l’utilisation CPU, RAM et disque.
+---------------+-------------+-----------+-----------+ | INSTANCE NAME | CPU TIME(S) | MEMORY | DISK | +---------------+-------------+-----------+-----------+ | foo | 6.73 | 12.44MiB | 341.88MiB | +---------------+-------------+-----------+-----------+ | speedtest | 32.79 | 23.84MiB | 373.50MiB | +---------------+-------------+-----------+-----------+ | v1 | 67130.91 | 254.54MiB | 1.25GiB | +---------------+-------------+-----------+-----------+ Press 'd' + ENTER to change delay Press 's' + ENTER to change sorting method Press CTRL-C to exit Delay: 5s Sorting Method: Alphabetical
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Informations sur la charge des serveurs dans l’API des ressources¶
Une nouvelle section a été ajoutée à l’API des ressources pour exposer les informations sur la charge des serveurs (1 min, 5 min, 10 min) ainsi que le nombre total de processus.
Ces informations sont particulièrement utiles pour le placement des instances et l’équilibrage automatique des hôtes, car elles permettent d’avoir un bon aperçu de l’activité des différents serveurs directement à partir de l’API d’Incus.
stgraber@castiana:~$ incus info --resources System: UUID: 05006c9c-7863-ee11-9e1b-224425600022 Vendor: Framework Product: Laptop 13 (AMD Ryzen 7040Series) Family: Laptop Version: A5 SKU: FRANDGCP05 Serial: FRANDGCPA5340500AZ Type: physical Chassis: Vendor: Framework Type: Notebook Version: A5 Serial: FRANDGCPA5340500AZ Motherboard: Vendor: Framework Product: FRANMDCP05 Serial: FRANMDCPA534040120 Version: A5 Firmware: Vendor: INSYDE Corp. Version: 03.05 Date: 03/29/2024 Load: Processes: 519 Average: 0.80 0.77 0.71 [snip...]
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Possibilité d’interroger les ACL des instances et projets¶
Deux nouvelles API ont été ajoutées pour permettre d’interroger les ACL des projets et des instances.
La fonctionnalité s’intègre à notre support d’OpenFGA et, avec une version suffisamment récente d’OpenFGA, vous montrera exactement qui peut accéder à une instance et quel est son rôle.
stgraber@castiana:~$ incus info --show-access foo - identifier: stgraber@stgraber.org role: admin provider: openfga stgraber@castiana:~$ incus project info --show-access default - identifier: stgraber@stgraber.org role: admin provider: openfga
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Suppression forcée de projets¶
Lorsque l’on a affaire à un grand nombre de projets très chargés, leur suppression peut devenir assez frustrante car il faut identifier et supprimer tout ce qu’ils contiennent dans le bon ordre.
Pour remédier à cela, nous avons à présent la commande incus project delete --force
, qui demandera à Incus de tout supprimer dans le bon ordre avant de supprimer le projet lui-même.
L’opération est bien entendu très dangereuse. L’outil en ligne de commande vous demandera toujours de confirmer que vous souhaitez bien procéder à la suppression complète du projet.
stgraber@castiana:~$ incus project delete demo Error: Only empty projects can be removed. stgraber@castiana:~$ incus project delete demo --force Remove demo and everything it contains (instances, images, volumes, networks, ...) (yes/no): yes Project demo deleted
Nouvelle fonction get_project
pour les scriptlets¶
Pour les personnes utilisant notre fonctionnalité de placement d’instances par scriplet (instances.placement.scriptlet
), une nouvelle fonction a été ajoutée, get_project
.
Elle permet de récupérer tous les détails (api.Project
) d’un projet donné et est particulièrement utile si vous souhaitez que les restrictions ou les limites du projet aient un impact sur la décision de placement.
Documentation : https://linuxcontainers.org/incus/docs/main/explanation/clustering/#instance-placement-scriptlet
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Interrogation des objets sur tous les projets¶
Incus permet depuis longtemps de lister toutes les instances, quel que soit le projet.
Récemment, cette fonctionnalité a été étendue aux volumes de stockage, aux images, aux profils, aux zones réseau et aux opérations en cours.
Avec Incus 6.2, toutes les collections d’objets manquantes prennent désormais en charge cette fonctionnalité :
- Buckets de stockage
- Réseaux
- ACL réseau
L’interface en ligne de commande a été mise à jour, de sorte que toutes les commandes list
montrant des objets spécifiques à un projet supportent maintenant --all-projects
.
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Périphériques PCI dans incus info --resources
¶
Tous les périphériques PCI sont désormais inclus dans la sortie de incus info --resources
.
Auparavant, seuls les périphériques inclus dans les sections GPU ou disque étaient disponibles.
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Amélioration de la gestion des alias dans incus-simplestreams
¶
L’implémentation initiale d’incus-simplestreams
générait automatiquement un alias de la forme DISTRIBUTION/RELEASE/VARIANT
, mais ce n’est pas adapté à tous les environnements. Il y a donc maintenant deux nouveaux arguments pour la commande incus-simplestreams add
:
--no-default-alias
pour désactiver l’alias automatique--alias
pour définir un alias personnalisé (l’argument peut être passé plusieurs fois)
Utilisation de YAML avec les commandes create
¶
Ce travail a été commencé avec Incus 6.1 et est maintenant terminé.
Toutes les commandes create
ainsi que incus init
et incus launch
acceptent désormais des fichiers YAML dans leur entrée standard.
Cela facilite grandement l’écriture de scripts pour des déploiements complexes.
Customisation des colonnes des commandes list
¶
Voici un autre travail commencé dans Incus 6.1 qui est maintenant terminé.
Toutes les commandes d’Incus qui ont une fonction list
prennent désormais en charge l’option --column/-c
.
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
Documentation générée de manière plus automatique¶
La plupart des personnes utilisant Incus ne devraient pas remarquer ce changement. Nous avons progressivement fait évoluer notre documentation pour qu’elle soit générée automatiquement à partir des commentaires dans notre code, limitant ainsi le risque qu’elle devienne obsolète ou désynchronisée.
Avec Incus 6.2, les éléments de documentation suivants sont générés de cette manière :
- Zones réseau
- Restrictions d’images
- Limites du noyau
- Périphériques
- disk
- unix-block
- unix-char
- unix-hotplug
- usb
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.
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/instance/lxc: Add gendoc comments for image restrictions
- incusd/instance/qemu: Add gendoc comments for image restrictions
- doc: Update configs
- doc/image-handling: Use gendoc data
- incus/storage_bucket: Add yaml support for key create
- i18n: Update translation templates
- incusd/instance/qemu: Fix StartedAt handling
- incus/storage: Customizable columns in list
- i18n: Update translation templates
- incusd/network/ovn: Port LogicalRouterSNATAdd and LogicalRouterDNATSNATAdd to libovsdb
- incusd/network: Update for OVN function changes
- api: instances_scriptlet_get_project
- doc/instances/scriptlet: Add get_project
- incusd/scriptlet: Add get_project
- api: networks_all_projects
- shared/api: Add Project field to Network
- client: Add GetNetworksAllProjects
- incus/network: Add all-projects
- incusd/db: Add GetNetworksAllProjects
- incusd/networks: Add all-projects
- internal/instance: Add gendoc for limits.kernel
- doc: Update configs
- doc: Use gendoc for limits.kernel
- api: network_acls_all_projects
- shared/api: Add Project field to NetworkACL
- client: Add GetNetworkACLsAllProjects
- incus/network/acl: Add all-projects
- incusd/db: Add GetNetworkACLsAllProjects
- incusd/network/acl: Set Project field
- incusd/network_acls: Add all-projects
- api: storage_buckets_all_projects
- shared/api: Add Project field to StorageBucket
- client: Add GetStoragePoolBucketsAllProjects
- incus/storage/bucket: Add all-projects
- incusd/db/storage_buckets: Fill Project field
- incusd/storage_buckets: Add all-projects
- i18n: Update translation templates
- incusd/networks: Fix import shadowing
- doc/rest-api: Refresh swagger YAML
- client: Align GetProfilesAllProjects with GetProfiles
- client: Align GetNetworkZonesAllProjects with GetNetworkZones
- client: Standardize the GetNetworkAllocation functions
- incus/network_allocations: Update for client changes
- incusd/device/usb: Add gendoc for the USB device
- doc: Update configs
- doc: Use gendoc for USB devices
- api: resources_load
- shared/api: Add Load to resources API
- doc/rest-api: Refresh swagger YAML
- incusd/resources: Add load information
- incus/info: Add load information
- i18n: Update translation templates
- incusd/device/unix: Add gendoc comments
- doc: Update configs
- doc/devices_unix_block.md: Use gendoc data
- doc/devices_unix_char.md: Use gendoc data
- doc/devices_unix_hotplug.md: Use gendoc data
- incus/top: Add new command
- i18n: Update translation templates
- incusd/network/zone: add gendoc for network zone
- doc: Update configs
- doc: Use gen doc for network zones
- incusd/device/unix: Run gofmt
- incus/info: Add PCI devices to --resources
- i18n: Update translation templates
- incusd/device/disk: Add gendoc comments
- doc: Update configs
- doc/devices/disk: Use gendoc
- incus/network: Customizable columns in list
- i18n: Update translation templates
- incusd/network_zones: Fix listing of zones within a project
- incusd/instance/lxc: Fix handling of migration.stateful
- gomod: Update dependencies
- incusd/network/ovs: Fix bad VLANMode value
- fix: close resources
- incusd/instance: Fix building on 32bit architectures
- incus/network_zone: Add example for network zone record create
- i18n: Update translation template
- incus/storage_volume: Add yaml support for create
- i18n: Update translation templates
- cmd/incus/info: Fix runtime error when chassis, motherboard and firwmare information is not available
- Translated using Weblate (German)
- incusd/instance/qemu: Allow setting protection.delete when running
- doc/api-extension: Fix typo
- shared/api: Introduce Access structs
- api: instance_access
- incusd/auth: Introduce GetInstanceAccess
- incusd/instance: Add access endpoint
- api: project_access
- incusd/auth: Introduce GetProjectAccess
- incusd/project: Add access endpoint
- doc/rest-api: Refresh swagger YAML
- client: Add GetInstanceAccess
- client: Add GetProjectAccess
- incus/info: Fix description of --show-log
- incus/info: Add --show-access
- incus/project: Add --show-access to info
- i18n: Update translation templates
- incusd/auth/fga: Rename manager by admin in model
- incusd/auth/fga: Rework permission model
- incusd/auth/fga: Rebuild model
- tests: Fix for permission changes
- incusd/instance/agent-loader: Support installing to /etc
- incusd/apparmor/lxc: Fix rule syntax
- incus-simplestreams add: added flags: --no-default-alias, --alias. #875
- incus/storage_volume/snapshot: Support YAML for creation
- i18n: Update translation templates
- shared/idmap: Make get_userns_fd configure the userns
- incus-migrate: Handle valid CA certificates
- incusd/instances_post: Fix migrating into remote cluster
- incusd/apparmor: Detect nosymfollow support
- incusd: Set SELinux label on socket
- incus/network: Align attach-profile with attach
- create_detached_idmapped_mount: avoid double close
- incusd/instance/qemu: Extend missing QEMU error
- doc/installing: Mention extra packages for VMs
- incusd/storage/btrfs: Fix btrfs argument order
- incusd/seccomp/sysinfo: Handle 32bit on 64bit
- api: projects_force_delete
- incusd/api_project: Add force delete endpoint
- doc/rest-api: Refresh swagger YAML
- client: Introduce DeleteProjectForce
- cmd/incus/project: Add --force to delete
- i18n: Update translation templates
- incusd/project: Simplify projectIsEmpty
- incusd/db: Introduce GetNetworkZoneURIs
- incusd/db: Introduce GetStorageBucketURIs
- incusd/api_project: Fix UsedBy
- incusd/api_project: Add force deletion logic
- incus/completion: Reduce API calls
- incus/publish: Complete snapshot names
- incus/completion: Fix import shadowing
- Translated using Weblate (French)
- Makefile: Pin go-acme/lego for Go 1.21
- Update dependencies
- cmd/incus/console: Cleanup --show-log
- incusd/instance_console: Remove old check
- incusd/instance_console: Handle missing log file
- incusd/instance_console: Don't fail on empty logs
- incusd/instance_console: Cleanup error message
- i18n: Update translation templates
- incusd/device/sriov: Line up code with comment
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.2.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