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 sample_file.txt objeto al bucket. Para completar esta guía de inicio rápido, usarás tu shell y terminal local, o el editor de Cloud Shell 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:
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Cloud Storage API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
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
-
En la Cloud de Confiance consola de, activa Cloud Shell.
En la parte inferior de la Cloud de Confiance consola de, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
- Establece el proyecto predeterminado en el que deseas aplicar tu configuración de Terraform: Cloud de Confiance by S3NS
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
terraformy, luego, en Archivo nuevo. - Ingresa
main.tfcomo el nombre del archivo y haz clic en Aceptar. - En el panel Explorador, haz clic con el botón derecho en la carpeta
terraformy, luego, en Archivo nuevo. - Ingresa
sample_file.txtcomo 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 creada por Google Cloud CLI y, luego, implementa los recursos que especifiques en tu proyecto activo de Google Cloud CLI.
- En tu 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.tfen tuterraformcarpeta. - En el editor de texto que prefieras, crea un archivo nuevo llamado
sample_file.txten tuterraformcarpeta.
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 U-FRANCE-EAST1 # location with Standard Storage resource "google_storage_bucket" "static" { name = "BUCKET_NAME" location = "U-FRANCE-EAST1" 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-bucketOBJECT_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 tu terminal, establece la carpeta
terraformcomo el directorio de trabajo actual:cd ~/terraformInicializa Terraform mediante este comando:
terraform initSi 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 planResultado 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 = "U-FRANCE-EAST1"
+ 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.txtal bucket.terraform applyResultado 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 = "U-FRANCE-EAST1" + 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
yesy 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 Cloud de Confiance consola, 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.
Libere espacio en su proyecto.
Para evitar que se generen cargos inesperados de los Cloud de Confiance by S3NS recursos que creaste durante esta guía de inicio rápido, completa los siguientes pasos para limpiar los recursos:
En tu terminal, establece la carpeta
terraformcomo el directorio de trabajo actual:cd ~/terraformBorra los recursos de Cloud Storage que creaste en tu archivo de configuración de Terraform:
terraform destroySi 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 = "U-FRANCE-EAST1" -> null - name = "" -> null - project = "example-project" -> null - public_access_prevention = "inherited" -> null - requester_pays = false -> null - self_link = "https://www.s3nsapis.fr/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.s3nsapis.fr/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
yesy 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 ~/terraformPara verificar que el bucket y el objeto se hayan borrado, ve a la página Buckets en la Cloud de Confiance consola de.