Maintenance prévue ce mercredi à 20h. Indisponibilité à prévoir. Plus d'infos ici

Virtualisation

Incus : installation et configuration pas à pas sur Ubuntu Server

Table des matières

lxc_logo



Introduction



Incus est un projet open-source pour la plateforme de gestion de conteneurs de nouvelle génération. C'est un fork de LXD (l'hyperviseur de conteneurs). Il peut gérer à la fois des conteneurs Linux et des machines virtuelles. Voyons comment installer la version stable du serveur Incus sur Ubuntu.

Lien du projet : https://linuxcontainers.org/incus/

Prérequis



On aura besoin de Ubuntu Server (24.04 dans cet article) et de préférence à jour !

On va installer le dépôt de Zabbly (développeurs d'Incus) : https://github.com/zabbly/incus

Bien que Incus soit disponible dans les dépôts d'Ubuntu, l'interface web UI est proposée par Zabbly !

On vérifie la clé publique :
Code BASH :
wget -q -O - https://pkgs.zabbly.com/key.asc | gpg --show-keys --fingerprint


On récupère la clé publique :
Code BASH :
mkdir -p /etc/apt/keyrings/
wget -O /etc/apt/keyrings/zabbly.asc https://pkgs.zabbly.com/key.asc


Et on paramètre le dépôt selon la doc :
Code BASH :
sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'


Vu que incus est aussi présent dans Ubuntu, on va donner une priorité plus élevée à incud du dépôt Zabbly via une préférence apt :
Code BASH :
nano /etc/apt/preferences.d/zabbly


Et on met ceci :
Code TEXT :
Package: *
Pin: origin pkgs.zabbly.com
Pin-Priority: 1001


On met à jour la liste des sources :
Code BASH :
apt update


Installation



On va installer incus (outils en ligne de commande) et l'interface web (UI) :
Code BASH :
apt install incus incus-ui-canonical


L'interface web est facultative, mais bien pratique quand même !

Configuration



Initialisation d'Incus



Maintenant que incus est installé, on va dans un premier temps l'initialiser :
Code BASH :
incus admin init


Je ne souhaite pas utiliser de clustering ou de fonctions avancées, j'ai répondu ainsi aux questions :
Code :
Would you like to use clustering? (yes/no) [default=no]: no
Do you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, dir, lvm, lvmcluster) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: 
Size in GiB of the new loop device (1GiB minimum) [default=5GiB]: 18GiB
Would you like to create a new local network bridge? (yes/no) [default=yes]: yes
What should the new bridge be called? [default=incusbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like the server to be available over the network? (yes/no) [default=no]: yes
Address to bind to (not including port) [default=all]: 
Port to bind to [default=8443]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: 
Would you like a YAML "init" preseed to be printed? (yes/no) [default=no]: 


On peut vérifier que incus fonctionne avec :
Code BASH :
incus list


Qui pour le moment ne renvoie aucune élément, on a rien déployé :
Code :
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+


Le réseau créé est celui-ci sur le bridge :
Code TEXT :
3: incusbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:18:7c:b4 brd ff:ff:ff:ff:ff:ff
    inet 10.109.243.1/24 scope global incusbr0
       valid_lft forever preferred_lft forever
 


On s'assurera que le réseau 10.109.243.0/24 soit bien routé dans notre réseau !


Paramétrage de l'interface web



On pourra accéder à l'interface web via son nom sur le port 8443 :
https://incusubu.linuxtricks.lan:8443

Si on a un parefeu, on ouvrira le port en conséquence évidemment :)
Code BASH :
ufw allow 8443


L'authentification est faite par certificat, on va créer un nouveau certificat car on en a pas encore :

incus-ui-01-certificat



On protège le certificat par un mot de passe :

incus-ui-02-certificat-pass



On va ensuite télécharger 2 choses :
- Le certificat à importer sur la machine incus
- Le certificat à importer dans notre navigateur

incus-ui-03-certificat-import



Après avoir copié le certificat sur le serveur avec un petit "scp", on va sur le serveur, importer le certificat :
Code BASH :
incus config trust add-certificate incus-ui.crt


Et on importe selon la procédure le certificat (.pfx) dans le navigateur.
Vu que je suis sous Vivaldi :
Code :
chrome:/settings/certificates


On importe le certificat et le mot de passe est demandé :

incus-ui-04-vivaldi-import



On retourne sur l'interface web et on accepte la connexion via certificat :

incus-ui-05-vivaldi-connexion-cert



Créer une instance



On va créer une instance (un conteneur) :

incus-10-creer-instance



On va créer une Alma Linux 9 (il y en a plen de dispo) :

incus-11-creer-conteneur-alma



Et après le Create and start, la machine est déployée et est démarrée :

incus-12-conteneur-ok



On pourra utiliser nos conteneurs et VMS :

incus-13-conteneur-parametres

Cette page a été vue 1028 fois