Aller au contenu

LXD : les profils

Un profil regroupe une configuration réutilisable (limites, périphériques, réseau, cloud-init) appliquée à plusieurs instances. C’est l’équivalent LXD d’un modèle de configuration : une modification du profil s’applique à toutes les instances qui l’utilisent.

Toute instance reçoit le profil default, qui contient un disque racine et une carte réseau :

Fenêtre de terminal
lxc profile list # liste les profils
lxc profile show default # contenu du profil par défaut
Fenêtre de terminal
lxc profile create petit
lxc profile set petit limits.cpu 1
lxc profile set petit limits.memory 512MiB
lxc profile get petit limits.memory # lire une valeur
lxc profile unset petit limits.cpu # retirer une valeur

Ajouter un périphérique au profil :

Fenêtre de terminal
lxc profile device add petit donnees disk source=/srv/donnees path=/mnt/donnees
lxc profile device remove petit donnees
Fenêtre de terminal
lxc profile edit petit # ouvre le profil dans l'éditeur
lxc profile edit petit < petit.yaml # remplace le contenu depuis un fichier

Exemple de fichier :

name: petit
description: Petit serveur
config:
limits.cpu: '2'
limits.memory: 2GiB
boot.autostart: 'true'
devices: {}
Fenêtre de terminal
lxc launch ubuntu:24.04 c1 -p default -p petit # à la création : liste de profils
lxc profile add c1 petit # ajoute un profil à une instance
lxc profile remove c1 petit # le retire
lxc profile assign c1 default,petit # remplace la liste complète
lxc profile show petit # voir aussi la section « used_by »

Les profils s’appliquent dans l’ordre de la liste ; en cas de conflit, le dernier l’emporte. La configuration propre à l’instance prime sur tous les profils.

Fenêtre de terminal
lxc config show c1 --expanded # résultat final : profils + configuration de l'instance

Un profil peut initialiser automatiquement toutes les instances qui l’utilisent :

Fenêtre de terminal
lxc profile set petit cloud-init.user-data "$(cat cloud-init.yaml)"
Fenêtre de terminal
lxc profile copy petit moyen
lxc profile delete moyen # échoue si une instance l'utilise