Mit Terraform Storage-Buckets erstellen und Objekte hochladen

In dieser Kurzanleitung erstellen Sie eine Terraform-Konfigurationsdatei, die einen Storage-Bucket bereitstellt und ein sample_file.txt-Objekt in den Bucket hochlädt. Für diese Kurzanleitung verwenden Sie den Cloud Shell-Editor, das Cloud Shell-Terminal und die Terraform-Befehlszeile, die in Cloud Shell vorinstalliert ist.

Hinweis

Führen Sie die folgenden Schritte aus, um ein Projekt für diese Kurzanleitung einzurichten:

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Cloud Storage API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Cloud Storage API aktivieren.

    Aktivieren Sie die API

Ordnerstruktur und Terraform-Konfigurationsdatei erstellen

Führen Sie die folgenden Schritte aus, um die Terraform-Konfigurationsdatei und die Datei zu erstellen, die Sie als Objekt in Cloud Storage hochladen:

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  1. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten:
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
  2. Legen Sie im Cloud Shell-Terminal das Basisverzeichnis als aktives Verzeichnis fest:
    cd
  3. Erstellen Sie einen neuen Ordner mit dem Namen terraform:
    mkdir terraform
  4. Starten Sie den Cloud Shell-Editor, indem Sie in der Symbolleiste des Cloud Shell-Fensters auf Editor öffnen klicken.
  5. Klicken Sie im Bereich Explorer mit der rechten Maustaste auf den Ordner terraform und dann auf Neue Datei.
  6. Geben Sie main.tf als Dateinamen ein und klicken Sie dann auf OK.
  7. Klicken Sie im Bereich Explorer mit der rechten Maustaste auf den Ordner terraform und dann auf Neue Datei.
  8. Geben Sie sample_file.txt als Dateinamen ein und klicken Sie dann auf OK.

Infrastruktur in der Terraform-Konfigurationsdatei definieren

Führen Sie die folgenden Schritte aus, um die Infrastruktur zu definieren, die Sie in Ihrer Terraform-Konfigurationsdatei bereitstellen möchten:

  1. Öffnen Sie im Cloud Shell-Editor die Datei main.tf.

  2. Kopieren Sie das folgende Beispiel in die Datei 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
    }

    Ersetzen Sie:

    • BUCKET_NAME: Geben Sie den Namen des Buckets ein, den Sie erstellen möchten. Beispiel: my-bucket.

    • OBJECT_NAME: Geben Sie den Namen des Objekts ein, das Sie hochladen möchten. Geben Sie für diese Kurzanleitung den Namen sample_file.txt ein.

    • OBJECT_PATH: Geben Sie den Pfad zum Objekt ein, das Sie hochladen möchten. Geben Sie für diese Kurzanleitung den Pfad ~/terraform/sample_file.txt ein.

  3. Speichern Sie die Datei main.tf.

Arbeitsverzeichnis mit der Terraform-Konfigurationsdatei initialisieren

Führen Sie die folgenden Schritte aus, um Terraform und das Verzeichnis mit Ihrer Terraform-Konfigurationsdatei zu initialisieren:

  1. Klicken Sie zum Öffnen des Cloud Shell-Terminals in der Symbolleiste des Cloud Shell-Editors auf Terminal öffnen.

  2. Legen Sie im Cloud Shell-Terminal den Ordner terraform als aktuelles Arbeitsverzeichnis fest:

    cd ~/terraform
    
  3. Initialisieren Sie Terraform:

    terraform init
    
  4. Wenn Sie zur Autorisierung von Cloud Shell aufgefordert werden, klicken Sie auf Autorisieren.

    Terraform initialisiert das Arbeitsverzeichnis. Wenn das Arbeitsverzeichnis erfolgreich initialisiert wird, gibt Terraform eine Ausgabe ähnlich der folgenden zurück:

    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.
    

Vorschau des Ausführungsplans ansehen

Der Terraform-Ausführungsplan basiert auf der Terraform-Konfiguration und gibt die Änderungen an, die Terraform an der Cloud Storage-Infrastruktur und den Diensten vornimmt.

Sehen Sie sich den Terraform-Ausführungsplan an:

terraform plan

Beispielausgabe:

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.

Im Ausführungsplan vorgeschlagenen Änderungen anwenden

Führen Sie die folgenden Schritte aus, um die Änderungen in Ihrer Terraform-Konfigurationsdatei anzuwenden:

  1. Wenden Sie die Änderungen aus dem Ausführungsplan mit dem folgenden Befehl auf die Cloud Storage-Infrastruktur an. Wenn Sie die Änderungen anwenden, erstellt Terraform einen Storage-Bucket und lädt sample_file.txt in den Bucket hoch.

    terraform apply
    

    Beispielausgabe:

    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. Geben Sie yes ein und drücken Sie die Eingabetaste.

    Bei Erfolg gibt Terraform eine Ausgabe ähnlich der folgenden zurück:

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

Storage-Bucket und hochgeladenes Objekt ansehen

Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

Buckets aufrufen

Der neue Bucket enthält das Objekt sample_file.txt. Die Bereitstellung der Ressourcen kann nach der Ausführung von terraform apply einige Minuten dauern.

Projekt bereinigen

Um unerwartete Kosten für die in dieser Kurzanleitung erstellten Google Cloud-Ressourcen zu vermeiden, führen Sie die folgenden Schritte aus, um die Ressourcen zu bereinigen:

  1. Legen Sie im Cloud Shell-Terminal den Ordner terraform als aktuelles Arbeitsverzeichnis fest:

    cd ~/terraform
    
  2. Löschen Sie die Cloud Storage-Ressourcen, die Sie basierend auf Ihrer Terraform-Konfigurationsdatei erstellt haben:

    terraform destroy
    
  3. Bei Erfolg gibt Terraform eine Ausgabe ähnlich der folgenden zurück:

    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. Geben Sie yes ein und drücken Sie die Eingabetaste. Bei Erfolg gibt Terraform eine Ausgabe ähnlich der folgenden zurück:

    Destroy complete! Resources: 2 destroyed.
    
  5. Klicken Sie im Cloud Shell-Editor mit der rechten Maustaste auf den Ordner terraform im Bereich Explorer und klicken Sie dann auf Löschen.

  6. Wenn Sie dazu aufgefordert werden, klicken Sie zur Bestätigung auf OK.

  7. Rufen Sie in der Google Cloud Console die Seite Buckets auf, um zu prüfen, ob der Bucket und das Objekt gelöscht wurden.

    Buckets aufrufen

Nächste Schritte