Aller au contenu principal
Sommaire de la formation

Gestion du Stockage avec Incus storage bucket

coolibra344 vues

6. Gestion du Stockage avec Incus

  • incus_storage_volume_copy : Copier des volumes pour redondance ou migration
  • incus_storage_bucket et incus_storage_bucket_key : Gérer des buckets de stockage et leurs accès

incus_storage_volume_copy : Copier des volumes pour redondance ou migration

La ressource incus_storage_volume_copy permet de créer une copie d'un volume existant. Cela peut être utile pour des raisons de redondance, de migration vers un nouveau pool de stockage ou simplement pour créer des sauvegardes de données.

Exemple d'utilisation de la fonction de copie de volume :

resource "incus_storage_pool" "dev_pool" {
  name   = "dev-pool"
  driver = "lvm"
  config = {
    "size": "55GiB"
  }
}

resource "incus_storage_volume" "data_volume_lvm" {
  name = "dev-data-volume-lvm"
  pool = incus_storage_pool.dev_pool.name
  config = {
    size = "5GB"
  }
}

resource "incus_storage_volume_copy" "data_volume_lvm_copy" {
  name        = "data-volume-copy"
  pool        = incus_storage_pool.dev_pool.name
  source_pool = incus_storage_pool.dev_pool.name
  source_name = incus_storage_volume.data_volume_lvm.name
}

resource "incus_instance" "prod_vm" {
  name   = "prod-srv-01"
  image  = "images:ubuntu/22.04"
  type = "virtual-machine"

  config = {
    "boot.autostart" = true
  }

  limits = {
    cpu = 2
    memory = "2048MB"
  }

  device {
    name = "data"
    type = "disk"
    properties = {
      path = "/opt/data"
      source = incus_storage_volume_copy.data_volume_lvm_copy.name
      pool   = incus_storage_pool.dev_pool.name
    }
  }
  device {
    name = "root"
    type = "disk"
    properties = {
      pool   = incus_storage_pool.dev_pool.name
      path = "/"
      size = "5GB"
    }
  }
}

 

  • incus_storage_pool définit un pool de stockage LVM nommé dev-pool avec une capacité de 55 GiB.
  • incus_storage_volume crée un volume  nommé dev-volume-lvm de 5GiB dans le pool dev-pool.
  • incus_storage_volume_copy pour copier le volume
  • incus_instance crée une instance vm pour utliser le volume copié et le monter dans /opt/data

 

incus_storage_bucket et incus_storage_bucket_key : Gérer des buckets de stockage et leurs accès

Un bucket est une unité de stockage dans laquelle vous pouvez stocker des objets, tels que des fichiers ou des données. Dans Incus, la gestion des buckets permet de structurer et d’organiser les données de manière efficace.

La ressource incus_storage_bucket permet de créer et de gérer des buckets de stockage.

Configuration de l'adresse s3

incus config set core.storage_buckets_address :8555

Exemple de Configuration

resource "incus_storage_pool" "pool-bucket" {
  name   = "bucket-pool"  # Nom du pool de stockage
  driver = "lvm"     # Type de pilote pour le pool
  config = {
    "size": "55GiB"
  }
}

resource "incus_storage_bucket" "bucket-dev" {
  name = "bucket-dev"           # Nom du bucket de stockage
  pool = incus_storage_pool.pool-bucket.name  # Référence au pool de stockage
  config = {
    "size" = "50MiB"
  }
}

 

  • incus_storage_pool crée un pool dédié aux buckets
  • incus_storage_bucket crée un bucket dans le pool dédié  

Clés de Bucket : incus_storage_bucket_key

Une clé de bucket permet de gérer les accès à un bucket spécifique. Cela aide à contrôler qui peut interagir avec les objets stockés dans le bucket.

Voici comment créer une clé pour un bucket de stockage:

resource "incus_storage_pool" "pool-bucket" {
  name   = "bucket-pool"  # Nom du pool de stockage
  driver = "lvm"     # Type de pilote pour le pool
  config = {
    "size": "55GiB"
  }
}

resource "incus_storage_bucket" "bucket-dev" {
  name = "bucket-dev"           # Nom du bucket de stockage
  pool = incus_storage_pool.pool-bucket.name  # Référence au pool de stockage
  config = {
    "size" = "50MiB"
  }
}

resource "incus_storage_bucket_key" "key_bucket_dev_admin" {
  name           = "bucket-dev-key-admin"  # Nom de la clé d'accès
  pool           = incus_storage_bucket.bucket-dev.pool  # Référence au pool de stockage
  storage_bucket = incus_storage_bucket.bucket-dev.name  # Référence au bucket
  role = "admin"
}


resource "incus_storage_bucket_key" "key_bucket_dev_ro" {
  name           = "bucket-dev-key-ro"  # Nom de la clé d'accès
  pool           = incus_storage_bucket.bucket-dev.pool  # Référence au pool de stockage
  storage_bucket = incus_storage_bucket.bucket-dev.name  # Référence au bucket
  role = "read-only"
}


# Output pour l'access_key et secret_key de la clé admin
output "admin_bucket_access_key" {
  value = incus_storage_bucket_key.key_bucket_dev_admin.access_key
  sensitive = true
}

output "admin_bucket_secret_key" {
  value = incus_storage_bucket_key.key_bucket_dev_admin.secret_key
  sensitive = true
}

# Output pour l'access_key et secret_key de la clé read-only
output "ro_bucket_access_key" {
  value = incus_storage_bucket_key.key_bucket_dev_ro.access_key
  sensitive = true
}

output "ro_bucket_secret_key" {
  value = incus_storage_bucket_key.key_bucket_dev_ro.secret_key
  sensitive = true
}

 

  • incus_storage_bucket_key pour acceder au bucket
incus storage bucket list bucket-pool
incus storage bucket show bucket-pool bucket-dev

 

 

  • Afficher les teraform outputs
terraform output admin_bucket_access_key
terraform output admin_bucket_secret_key
terraform output ro_bucket_access_key
terraform output ro_bucket_secret_key

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.