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 Ihre lokale Shell und Ihr lokales Terminal oder den Cloud Shell-Editor und das Cloud Shell-Terminal. Außerdem verwenden Sie die Terraform-Befehlszeile, die in Cloud Shell vorinstalliert ist.
Hinweise
Führen Sie die folgenden Schritte aus, um ein Projekt für diese Kurzanleitung einzurichten:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage 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:
Cloud Shell
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
- Legen Sie im Cloud Shell-Terminal das Basisverzeichnis als aktives Verzeichnis fest:
cd
- Erstellen Sie einen neuen Ordner mit dem Namen
terraform
:
mkdir terraform
- Starten Sie den Cloud Shell-Editor, indem Sie in der Symbolleiste des Cloud Shell-Fensters auf Editor öffnen klicken.
- Klicken Sie im Bereich Explorer mit der rechten Maustaste auf den Ordner
terraform
und dann auf Neue Datei. - Geben Sie
main.tf
als Dateinamen ein und klicken Sie dann auf OK. - Klicken Sie im Bereich Explorer mit der rechten Maustaste auf den Ordner
terraform
und dann auf Neue Datei. - Geben Sie
sample_file.txt
als Dateinamen ein und klicken Sie dann auf OK.
Lokale Shell
- Installieren und konfigurieren Sie Terraform, falls Sie es noch nicht getan haben.
Installieren und initialisieren Sie die Google Cloud CLI.
Standardmäßig liest Terraform die von der Google Cloud CLI erstellte Konfiguration und stellt die von Ihnen später angegebenen Ressourcen in Ihrem aktiven Google Cloud CLI-Projekt bereit.
- Legen Sie in Ihrem Terminal das Basisverzeichnis als aktives Verzeichnis fest:
cd
- Erstellen Sie einen neuen Ordner mit dem Namen
terraform
:
mkdir terraform
- Erstellen Sie in Ihrem bevorzugten Texteditor im Ordner
terraform
eine neue Datei mit dem Namenmain.tf
. - Erstellen Sie in Ihrem bevorzugten Texteditor im Ordner
terraform
eine neue Datei mit dem Namensample_file.txt
.
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:
Öffnen Sie die Datei
main.tf
.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.
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:
Legen Sie in Ihrem Terminal den Ordner
terraform
als aktuelles Arbeitsverzeichnis fest:cd ~/terraform
Initialisieren Sie Terraform:
terraform init
Wenn Sie Cloud Shell verwenden und aufgefordert werden, Cloud Shell zu autorisieren, 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:
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:
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.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:
Legen Sie in Ihrem Terminal den Ordner
terraform
als aktuelles Arbeitsverzeichnis fest:cd ~/terraform
Löschen Sie die Cloud Storage-Ressourcen, die Sie basierend auf Ihrer Terraform-Konfigurationsdatei erstellt haben:
terraform destroy
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:
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.
Löschen Sie im Terminal den Ordner
terraform
.rm -rf ~/terraform
Rufen Sie in der Google Cloud Console die Seite Buckets auf, um zu prüfen, ob der Bucket und das Objekt gelöscht wurden.
Nächste Schritte
- Siehe Für Cloud Storage verfügbare Terraform-Ressourcen.
- Siehe Terraform-Ressourcen für andere Google Cloud-Produkte.