En esta guía de inicio rápido, crearás un archivo de configuración de Terraform que aprovisione un bucket de almacenamiento y suba un objeto sample_file.txt
al bucket. Para completar esta guía de inicio rápido, usarás tu shell y terminal locales, o el editor y la terminal de Cloud Shell. También usarás la CLI de Terraform, que está preinstalada en Cloud Shell.
Antes de comenzar
A fin de configurar un proyecto para esta guía de inicio rápido, completa los siguientes pasos:
- 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.
Crea la estructura de carpetas y el archivo de configuración de Terraform
Para crear el archivo de configuración de Terraform y el archivo que subirás como objeto a Cloud Storage, completa los siguientes pasos:
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.
- Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
- En la terminal de Cloud Shell, establece el directorio principal como el directorio activo:
cd
- Crea una nueva carpeta llamada
terraform
:
mkdir terraform
- Haz clic en Abrir editor en la barra de herramientas de la ventana de Cloud Shell para iniciar el editor de Cloud Shell.
- En el panel Explorador, haz clic con el botón derecho en la carpeta
terraform
y, luego, en Archivo nuevo. - Ingresa
main.tf
como el nombre del archivo y haz clic en Aceptar. - En el panel Explorador, haz clic con el botón derecho en la carpeta
terraform
y, luego, en Archivo nuevo. - Ingresa
sample_file.txt
como el nombre del archivo y haz clic en Aceptar.
Shell local
- Si aún no lo hiciste,
instala y configura Terraform.
Asegúrate de instalar y
inicializar Google Cloud CLI.
De forma predeterminada, Terraform lee la configuración que crea Google Cloud CLI y, luego, implementa los recursos que especificas en tu proyecto activo de Google Cloud CLI.
- En la terminal, establece el directorio principal como el directorio activo:
cd
- Crea una nueva carpeta llamada
terraform
:
mkdir terraform
- En el editor de texto que prefieras, crea un archivo nuevo llamado
main.tf
en la carpetaterraform
. - En el editor de texto que prefieras, crea un archivo nuevo llamado
sample_file.txt
en la carpetaterraform
.
Define la infraestructura en el archivo de configuración de Terraform
Para definir la infraestructura que deseas aprovisionar en el archivo de configuración de Terraform, completa los siguientes pasos:
Abre el archivo
main.tf
.Copia la siguiente muestra en el archivo
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 }
Reemplaza lo siguiente:
BUCKET_NAME por el nombre del bucket que deseas crear. Por ejemplo,
my-bucket
OBJECT_NAME por el nombre del objeto que deseas subir. Para esta guía de inicio rápido, ingresa el nombre
sample_file.txt
.OBJECT_PATH por la ruta de acceso al objeto que deseas subir. Para esta guía de inicio rápido, ingresa la ruta de acceso
~/terraform/sample_file.txt
.
Guarda el archivo
main.tf
.
Inicializa el directorio de trabajo que contiene el archivo de configuración de Terraform
Para inicializar Terraform y el directorio que contiene tu archivo de configuración de Terraform, completa los siguientes pasos:
En la terminal, configura la carpeta
terraform
como el directorio de trabajo actual:cd ~/terraform
Inicializa Terraform mediante este comando:
terraform init
Si usas Cloud Shell y se te solicita que autorices a Cloud Shell, haz clic en Autorizar.
Terraform inicializa el directorio de trabajo. Si inicializa correctamente el directorio de trabajo, Terraform muestra un resultado similar al siguiente:
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.
Obtén una vista previa del plan de ejecución
El plan de ejecución de Terraform se basa en la configuración de Terraform e indica los cambios que Terraform planea realizar en la infraestructura y los servicios de Cloud Storage.
Visualiza el plan de ejecución de Terraform:
terraform plan
Resultado de ejemplo:
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.
Aplica los cambios propuestos en el plan de ejecución
Para aplicar los cambios en tu archivo de configuración de Terraform, completa los siguientes pasos:
Aplica los cambios del plan de ejecución a la infraestructura de Cloud Storage con el siguiente comando. Cuando aplicas los cambios, Terraform crea un bucket de almacenamiento y sube
sample_file.txt
al bucket.terraform apply
Resultado de ejemplo:
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:
Escribe
yes
y presiona Intro.Si se ejecuta de forma correcta, Terraform mostrará un resultado similar al siguiente:
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Ve tu bucket de almacenamiento y el objeto subido
En la consola de Cloud, ve a la página Buckets de Cloud Storage.Aparecerá el bucket nuevo que contiene el objeto sample_file.txt
. Ten en cuenta que los recursos pueden tardar unos minutos en aprovisionarse después de ejecutar terraform apply
.
Limpie su proyecto.
Para evitar que se generen cargos inesperados de los recursos de Google Cloud que creaste durante esta guía de inicio rápido, completa los siguientes pasos para limpiar los recursos:
En la terminal, configura la carpeta
terraform
como el directorio de trabajo actual:cd ~/terraform
Borra los recursos de Cloud Storage que creaste en tu archivo de configuración de Terraform:
terraform destroy
Si se ejecuta de forma correcta, Terraform mostrará un resultado similar al siguiente:
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:
Escribe
yes
y presiona Intro. Si se ejecuta de forma correcta, Terraform mostrará un resultado similar al siguiente:Destroy complete! Resources: 2 destroyed.
En la terminal, borra la carpeta
terraform
.rm -rf ~/terraform
Para verificar que el bucket y el objeto se hayan borrado, ve a la página Buckets en la consola de Google Cloud.
¿Qué sigue?
- Consulta los recursos de Terraform disponibles para Cloud Storage.
- Consulta los recursos de Terraform para otros productos de Google Cloud.