Neste guia de início rápido, você vai criar um arquivo de configuração do Terraform
que provisiona um bucket de armazenamento e faz upload de um objeto sample_file.txt
nele. Para concluir este guia de início rápido, você usará o editor do Cloud Shell, o
terminal do Cloud Shell e a CLI do Terraform, que é pré-instalada
no Cloud Shell.
Antes de começar
Para configurar um projeto para este guia de início rápido, siga estas etapas:
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Cloud Storage.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Cloud Storage.
Criar a estrutura de pastas e o arquivo de configuração do Terraform
Para criar o arquivo de configuração do Terraform e o arquivo que você vai enviar como um objeto para o Cloud Storage, siga estas etapas:
-
No Console do Google Cloud, ative o Cloud Shell.
Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
- Defina o projeto padrão do Google Cloud
em que você quer aplicar a
configuração do Terraform:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
- No terminal do Cloud Shell, defina o diretório
inicial como o diretório ativo:
cd
- Crie uma nova pasta chamada
terraform
:
mkdir terraform
- Clique em Abrir editor na barra de ferramentas da janela para iniciar o editor do Cloud Shell.
- No painel Explorer, clique com o botão direito do mouse na pasta
terraform
e, em seguida, clique em Novo arquivo. - Insira
main.tf
como o nome do arquivo e clique em OK. - No painel Explorer, clique com o botão direito do mouse na pasta
terraform
e, em seguida, clique em Explorer. - Insira
sample_file.txt
como o nome do arquivo e clique em OK.
Definir a infraestrutura no arquivo de configuração do Terraform
Para definir a infraestrutura que você quer provisionar no arquivo de configuração do Terraform, siga estas etapas:
No Editor do Cloud Shell, abra o arquivo
main.tf
.Copie o exemplo a seguir para o arquivo
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 }
Substitua:
BUCKET_NAME pelo nome do bucket que você quer criar. Por exemplo,
my-bucket
.OBJECT_NAME pelo nome do objeto que você quer enviar. Para este guia de início rápido, insira o nome
sample_file.txt
.OBJECT_PATH pelo caminho do objeto que você quer enviar. Para este guia de início rápido, insira o caminho
~/terraform/sample_file.txt
.
Salve o arquivo
main.tf
.
Inicializar o diretório de trabalho que contém o arquivo de configuração do Terraform
Para inicializar o Terraform e o diretório que contém seu arquivo de configuração do Terraform, siga as seguintes etapas:
Para abrir o terminal do Cloud Shell, clique em Abrir terminal na barra de ferramentas do editor.
No terminal do Cloud Shell, defina a pasta
terraform
como o diretório de trabalho atual:cd ~/terraform
Inicialize o Terraform:
terraform init
Se for preciso autorizar o Cloud Shell, clique em Autorizar.
O Terraform inicializa o diretório de trabalho. Se o diretório de trabalho for inicializado, o Terraform retornará uma saída semelhante a esta:
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.
Visualizar o plano de execução
O plano de execução do Terraform é baseado na configuração do Terraform e indica as alterações que ele planeja fazer na infraestrutura e nos serviços do Cloud Storage.
Confira o plano de execução do Terraform:
terraform plan
Exemplo de saída:
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.
Aplicar as alterações propostas no plano de execução
Para aplicar as alterações no arquivo de configuração do Terraform, siga estas etapas:
Aplique as alterações do plano de execução à infraestrutura do Cloud Storage com o comando a seguir. Quando você aplica as alterações, o Terraform cria um bucket de armazenamento e envia
sample_file.txt
ao bucket.terraform apply
Exemplo de saída:
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:
Digite
yes
e pressione Enter.Se for bem-sucedido, o Terraform retornará uma saída semelhante a esta:
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Ver o bucket de armazenamento e o objeto enviado por upload
No Console do Cloud, acesse a página Buckets do Cloud Storage.O novo bucket será exibido com o objeto sample_file.txt
. Os
recursos podem levar alguns minutos para serem provisionados após a execução de
terraform apply
.
Limpar o projeto
Para evitar cobranças inesperadas dos recursos do Google Cloud criados durante este guia de início rápido, conclua as etapas a seguir para limpar os recursos:
No terminal do Cloud Shell, defina a pasta
terraform
como o diretório de trabalho atual:cd ~/terraform
Exclua os recursos do Cloud Storage criados com base no arquivo de configuração do Terraform:
terraform destroy
Se for bem-sucedido, o Terraform retornará uma saída semelhante a esta:
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:
Digite
yes
e pressione Enter. Se for bem-sucedido, o Terraform retornará uma saída semelhante a esta:Destroy complete! Resources: 2 destroyed.
No editor do Cloud Shell, clique com o botão direito do mouse na pasta
terraform
no painel Explorer e clique em Explorer.Quando solicitado, clique em OK para confirmar.
Para verificar se o bucket e o objeto foram excluídos, acesse a página Buckets no console do Google Cloud.
A seguir
- Consulte Recursos do Terraform disponíveis para o Cloud Storage.
- Consulte Recursos do Terraform para outros produtos do Google Cloud.