Créer des buckets de stockage et importer des objets à l'aide de Terraform

Dans ce guide de démarrage rapide, vous allez créer un fichier de configuration Terraform qui provisionne un bucket de stockage et y importe un objet sample_file.txt. Pour suivre ce guide de démarrage rapide, vous allez utiliser l'éditeur Cloud Shell, le terminal Cloud Shell et la CLI Terraform, qui est préinstallée dans Cloud Shell.

Avant de commencer

Pour configurer un projet pour ce guide de démarrage rapide, procédez comme suit :

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez l'API Cloud Storage

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activez l'API Cloud Storage

    Activer l'API

Créer la structure de dossiers et le fichier de configuration Terraform

Pour créer le fichier de configuration Terraform et le fichier que vous allez importer en tant qu'objet dans Cloud Storage, procédez comme suit :

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  1. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform :
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
  2. Dans le terminal Cloud Shell, définissez le répertoire d'accueil comme répertoire actif :
    cd
  3. Créez un dossier nommé terraform :
    mkdir terraform
  4. Lancez l'éditeur Cloud Shell en cliquant sur Ouvrir l'éditeur dans la barre d'outils de la fenêtre Cloud Shell.
  5. Dans le volet Explorateur, effectuez un clic droit sur le dossier terraform, puis cliquez sur Nouveau fichier.
  6. Saisissez main.tf comme nom de fichier, puis cliquez sur OK.
  7. Dans le volet Explorateur, effectuez un clic droit sur le dossier terraform, puis cliquez sur Nouveau fichier.
  8. Saisissez sample_file.txt comme nom de fichier, puis cliquez sur OK.

Définir l'infrastructure dans le fichier de configuration Terraform

Pour définir l'infrastructure que vous souhaitez provisionner dans votre fichier de configuration Terraform, procédez comme suit :

  1. Dans l'éditeur Cloud Shell, ouvrez le fichier main.tf.

  2. Copiez l'exemple suivant dans le fichier main.tf.

    # Create new storage bucket in the US
    # location with Standard Storage
    
    resource "google_storage_bucket" "static" {
     name          = "BUCKET_NAME"
     location      = "US"
     storage_class = "STANDARD"
    
     uniform_bucket_level_access = true
    }
    
    # Upload a text file as an object
    # to the storage bucket
    
    resource "google_storage_bucket_object" "default" {
     name         = "OBJECT_NAME"
     source       = "OBJECT_PATH"
     content_type = "text/plain"
     bucket       = google_storage_bucket.static.id
    }

    Remplacez :

    • BUCKET_NAME par le nom du bucket que vous souhaitez créer. Par exemple, my-bucket.

    • OBJECT_NAME par le nom de l'objet que vous souhaitez importer. Pour ce guide de démarrage rapide, saisissez le nom sample_file.txt.

    • OBJECT_PATH par le chemin d'accès à l'objet que vous souhaitez importer. Pour ce guide de démarrage rapide, saisissez le chemin d'accès ~/terraform/sample_file.txt.

  3. Enregistrez le fichier main.tf.

Initialiser le répertoire de travail contenant le fichier de configuration Terraform

Pour initialiser Terraform} et le répertoire contenant votre fichier de configuration Terraform, procédez comme suit :

  1. Pour ouvrir le terminal Cloud Shell, cliquez sur Ouvrir le terminal dans la barre d'outils de l'éditeur Cloud Shell.

  2. Dans le terminal Cloud Shell, définissez le dossier terraform comme répertoire de travail actuel :

    cd ~/terraform
    
  3. Initialisez Terraform :

    terraform init
    
  4. Si vous êtes invité à autoriser Cloud Shell, cliquez sur Authorize (Autoriser).

    Terraform initialise le répertoire de travail. Si l'initialisation du répertoire de travail réussit, Terraform renvoie un résultat semblable à celui-ci :

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
    

Prévisualiser le plan d'exécution

Le plan d'exécution Terraform est basé sur la configuration Terraform et indique les modifications que Terraform prévoit d'apporter à l'infrastructure et aux services Cloud Storage.

Affichez le plan d'exécution Terraform :

terraform plan

Exemple de résultat :

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # google_storage_bucket.static will be created
  + resource "google_storage_bucket" "static" {
      + force_destroy               = false
      + id                          = (known after apply)
      + location                    = "US"
      + name                        = "my-bucket"
      + project                     = "my-project"
      + public_access_prevention    = (known after apply)
      + self_link                   = (known after apply)
      + storage_class               = "STANDARD"
      + uniform_bucket_level_access = true
      + url                         = (known after apply)

      + versioning {
          + enabled = (known after apply)
        }

      + website {
          + main_page_suffix = (known after apply)
          + not_found_page   = (known after apply)
        }
    }

  # google_storage_bucket_object.default will be created
  + resource "google_storage_bucket_object" "default" {
      + bucket         = (known after apply)
      + content_type   = "text/plain"
      + crc32c         = (known after apply)
      + detect_md5hash = "different hash"
      + id             = (known after apply)
      + kms_key_name   = (known after apply)
      + md5hash        = (known after apply)
      + media_link     = (known after apply)
      + name           = "sample_file.txt"
      + output_name    = (known after apply)
      + self_link      = (known after apply)
      + source         = "sample_file.txt"
      + storage_class  = (known after apply)
    }

Plan: 2 to add, 0 to change, 0 to destroy.

Appliquer les modifications proposées dans le plan d'exécution

Pour appliquer les modifications dans votre fichier de configuration Terraform, procédez comme suit :

  1. Appliquez les modifications du plan d'exécution à l'infrastructure Cloud Storage en utilisant la commande suivante. Lorsque vous appliquez les modifications, Terraform crée un bucket de stockage et y importe sample_file.txt.

    terraform apply
    

    Exemple de résultat :

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # google_storage_bucket.static will be created
      + resource "google_storage_bucket" "static" {
          + force_destroy               = false
          + id                          = (known after apply)
          + location                    = "US"
          + name                        = "my-bucket"
          + project                     = "my-project"
          + public_access_prevention    = (known after apply)
          + self_link                   = (known after apply)
          + storage_class               = "STANDARD"
          + uniform_bucket_level_access = true
          + url                         = (known after apply)
    
          + versioning {
              + enabled = (known after apply)
            }
    
          + website {
              + main_page_suffix = (known after apply)
              + not_found_page   = (known after apply)
            }
        }
    
      # google_storage_bucket_object.default will be created
      + resource "google_storage_bucket_object" "default" {
          + bucket         = (known after apply)
          + content_type   = "text/plain"
          + crc32c         = (known after apply)
          + detect_md5hash = "different hash"
          + id             = (known after apply)
          + kms_key_name   = (known after apply)
          + md5hash        = (known after apply)
          + media_link     = (known after apply)
          + name           = "sample_file.txt"
          + output_name    = (known after apply)
          + self_link      = (known after apply)
          + source         = "sample_file.txt"
          + storage_class  = (known after apply)
        }
    
    Plan: 2 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value:
    
  2. Saisissez yes et appuyez sur Entrée.

    Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    

Afficher votre bucket de stockage et l'objet importé

Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

Accéder à la page "Buckets"

Le nouveau bucket contenant l'objet sample_file.txt s'affiche. Notez que le provisionnement des ressources peut prendre quelques minutes après l'exécution de terraform apply.

Nettoyer votre projet

Afin d'éviter que des frais inattendus ne soient facturés sur les ressources Google Cloud que vous avez créées dans le cadre du présent guide de démarrage rapide, procédez comme suit pour nettoyer les ressources :

  1. Dans le terminal Cloud Shell, définissez le dossier terraform comme répertoire de travail actuel :

    cd ~/terraform
    
  2. Supprimez les ressources Cloud Storage que vous avez créées sur la base de votre fichier de configuration Terraform :

    terraform destroy
    
  3. Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      - destroy
    
    Terraform will perform the following actions:
    
      # google_storage_bucket.static will be destroyed
      - resource "google_storage_bucket" "static" {
          - default_event_based_hold    = false -> null
          - force_destroy               = false -> null
          - id                          = "my-bucket" -> null
          - labels                      = {} -> null
          - location                    = "US" -> null
          - name                        = "" -> null
          - project                     = "example-project" -> null
          - public_access_prevention    = "inherited" -> null
          - requester_pays              = false -> null
          - self_link                   = "https://www.googleapis.com/storage/v1/b/cbonnie-bucket-9" -> null
          - storage_class               = "STANDARD" -> null
          - uniform_bucket_level_access = true -> null
          - url                         = "gs://BUCKET_NAME" -> null
        }
    
      # google_storage_bucket_object.default will be destroyed
      - resource "google_storage_bucket_object" "default" {
          - bucket           = "my-bucket" -> null
          - content_type     = "text/plain" -> null
          - crc32c           = "yZRlqg==" -> null
          - detect_md5hash   = "XrY7u+Ae7tCTyyK7j1rNww==" -> null
          - event_based_hold = false -> null
          - id               = "my-bucket-sample_file.txt" -> null
          - md5hash          = "XrY7u+Ae7tCTyyK7j1rNww==" -> null
          - media_link       = "https://storage.googleapis.com/download/storage/v1/b/BUCKET_NAME/o/sample_file.txt?generation=1675800386233102&alt=media" -> null
          - metadata         = {} -> null
          - name             = "sample_file.txt" -> null
          - output_name      = "sample_file.txt" -> null
          - self_link        = "https://www.googleapis.com/storage/v1/b/BUCKET_NAME/o/sample_file.txt" -> null
          - source           = "sample_file.txt" -> null
          - storage_class    = "STANDARD" -> null
          - temporary_hold   = false -> null
        }
    
    Plan: 0 to add, 0 to change, 2 to destroy.
    
    Do you really want to destroy all resources?
      Terraform will destroy all your managed infrastructure, as shown above.
      There is no undo. Only 'yes' will be accepted to confirm.
    
      Enter a value:
    
  4. Saisissez yes et appuyez sur Entrée. Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :

    Destroy complete! Resources: 2 destroyed.
    
  5. Dans l'éditeur Cloud Shell, effectuez un clic droit sur le dossier terraform dans le volet Explorateur, puis cliquez sur Supprimer.

  6. Lorsque vous y êtes invité, cliquez sur OK pour confirmer l'action.

  7. Pour vérifier que le bucket et l'objet ont été supprimés, accédez à la page Buckets de la console Google Cloud.

    Accéder à la page "Buckets"

Étapes suivantes