Gestion des images avec Incus
3. Gestion des Conteneurs avec Incus
-
- incus_image : Gestion des images avec Incus
Importer et gérer une image locale avec incus_image
Le bloc incus_image est utilisé pour définir des images locales qui peuvent être réutilisées dans plusieurs instances. Ces images peuvent être importées depuis des sources distantes comme images (le référentiel d'images officiel d'Incus) ou des instances existantes.
Exemple d'importation d'une image Ubuntu depuis un dépôt distantDans cet exemple, nous allons importer une image Ubuntu à partir du dépôt d'images Incus et l'utiliser pour créer une instance.
resource "incus_image" "ubuntu-image" {
source_image = {
remote = "images" # Nom du dépôt distant
name = "ubuntu/22.04" # Nom de l'image à importer
}
}
- remote : Définit le dépôt distant à partir duquel l'image sera importée. Ici, il s'agit du référentiel d'images par défaut d'Incus (images).
- name : Spécifie le nom de l'image à importer, ici ubuntu/22.04 est une distribution ubuntu.

Exemple de création d'une instance à partir de l'image
Une fois l'image importée, nous pouvons l'utiliser pour créer une instance :
resource "incus_image" "ubuntu-image" {
source_image = {
remote = "images" # Nom du dépôt distant
name = "ubuntu/22.04" # Nom de l'image à importer
}
}
resource "incus_instance" "ubuntu-container" {
name = "ubuntu-image-container"
image = incus_image.ubuntu-image.fingerprint # Utilisation de l'empreinte de l'image
ephemeral = false # Définit si le container doit être éphémère ou persistante
type = "container"
config = {
"boot.autostart" = true # Démarrage automatique de la VM
}
}
- image : Référence l'empreinte unique de l'image importée via incus_image.ubuntu-image.fingerprint. Cela garantit que la bonne image est utilisée pour la création de l'instance.
- ephemeral : Si défini à false, l'instance persistera après son arrêt. Si défini à true, l'instance sera supprimée automatiquement à son arrêt.

Dans cet exemple :
- L'image Ubuntu 22.04 est importée depuis le dépôt Incus
- Une instance de conteneur est ensuite créée à partir de cette image
Créer une image à partir d'une instannce
Pour créer une personnalisée, on crée une instance sur laquelle on installe tous les requirements, ensuite on crée une image à partir de cette instance.
- Par exemple: On install nginx sur cette instance et on crée une image à partir de l'instance.
apt install -y nginx

- Création d'une image à partir d'une instance
resource "incus_image" "custom-image" {
source_instance = {
name = "ubuntu-image-container" # instance créée precedemment avec nginx installé dessus
}
aliases = ["ubuntu-22-04-nginx", "ubuntu-22-04"] # alias sont définis pour faciliter sa réutilisation
project = "default" # Spécifie le projet où l'image sera stockée
}
resource "incus_instance" "custom-ubuntu-container" {
name = "custom-ubuntu-container"
image = incus_image.custom-image.fingerprint # Utilisation de l'empreinte de l'image
ephemeral = false # Définit si le container doit être éphémère ou persistante
type = "container"
config = {
"boot.autostart" = true # Démarrage automatique de la VM
}
}
resource "incus_instance" "nginx-ubuntu-container" {
name = "nginx-ubuntu-container"
image = "ubuntu-22-04-nginx" # # Utilisation de l'alias défini précédemment
ephemeral = false
type = "container"
config = {
"boot.autostart" = true # Démarrage automatique de la VM
}
limits = {
cpu = 1
}
}
Il faut eteindre l'instance avant le terraform apply
terraform apply


Nginx web server est disponible sur la nouvelle instance sur l'ip 192.168.10.177
- Une instance est créée à partir de l'image Ubuntu 22.04. Où on avait installé nginx web server
- On crée une nouvelle image à partir de l'instance et alias sont définis pour faciliter sa réutilisation.
- Une instance de conteneur est ensuite créée à partir de cette nouvelle image avec une configuration de démarrage automatique et limits resources.
Cleanup:
terraform destroyCommentaires
Aucun commentaire pour le moment.