Aller au contenu principal
Sommaire de la formation

Gestion des images avec Incus

coolibra583 vues

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 distant

Dans 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 destroy

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.