SCBL002
Visão geral
Neste laboratório, você vai automatizar a criação de instâncias e bancos de dados do Spanner usando o SDK Google Cloud, a interface de linha de comando (CLI) e o Terraform.
Objetivos
Neste laboratório, você vai aprender a:
- criar instâncias e bancos de dados usando a gcloud CLI;
- automatizar a infraestrutura do Spanner usando o Terraform.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça, depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta pessoal do Google Cloud neste laboratório para evitar cobranças extras.
Ative o Google Cloud Shell
O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele conta com um diretório principal permanente de 5 GB e é executado no Google Cloud.
O Google Cloud Shell permite acesso de linha de comando aos seus recursos do GCP.
-
No Console do GCP, na barra de ferramentas superior direita, clique no botão Abrir o Cloud Shell.

-
Clique em Continue (continuar):

Demora alguns minutos para provisionar e conectar-se ao ambiente. Quando você está conectado, você já está autenticado e o projeto é definido como seu PROJECT_ID . Por exemplo:

gcloud é a ferramenta de linha de comando do Google Cloud Platform. Ele vem pré-instalado no Cloud Shell e aceita preenchimento com tabulação.
É possível listar o nome da conta ativa com este comando:
gcloud auth list
Saída:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
É possível listar o ID de projeto com este comando:
gcloud config list project
Saída:
[core]
project = <project_ID>
Exemplo de saída:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Tarefa 1: criar instâncias e bancos de dados usando a gcloud CLI
-
Na barra de título do console do Google Cloud, clique em Ativar o Cloud Shell (
). Caso solicitado, clique em Continuar.
-
Execute o seguinte comando para definir o ID do projeto:
gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
- No prompt do Cloud Shell, execute o comando a seguir para criar uma instância do Spanner chamada test-spanner-instance.
Observe os parâmetros de configuração e capacidade do Spanner. Se precisar autorizar o comando, faça isso.
gcloud spanner instances create test-spanner-instance --config=regional-{{{project_0.default_region|place_holder_text}}} --description="test-spanner-instance" --processing-units=100
- O comando não deve demorar. No console, acesse o serviço Spanner e verifique se a instância foi criada.
Para acessar a instância, execute o comando abaixo. Experimente isso agora.
gcloud spanner instances list
- Antes de criar o banco de dados "Animais de estimação", você precisa de um arquivo que contenha o código DDL. Digite o comando a seguir para criar o arquivo e abri-lo no editor de código nano.
nano pets-db-schema.sql
- Cole o código a seguir no Nano. Digite
Ctrl+X
, depois Y
e pressione a tecla ENTER para salvar o arquivo.
CREATE TABLE Owners (
OwnerID STRING(36) NOT NULL,
OwnerName STRING(MAX) NOT NULL
) PRIMARY KEY (OwnerID);
CREATE TABLE Pets (
PetID STRING(36) NOT NULL,
OwnerID STRING(36) NOT NULL,
PetType STRING(MAX) NOT NULL,
PetName STRING(MAX) NOT NULL,
Breed STRING(MAX) NOT NULL,
) PRIMARY KEY (PetID);
- Agora que você tem o arquivo de esquema, execute o comando a seguir para criar o banco de dados.
gcloud spanner databases create pets-db --instance=test-spanner-instance --database-dialect=GOOGLE_STANDARD_SQL --ddl-file=./pets-db-schema.sql
- Insira um proprietário e todos os cães dele. As chaves primárias de "Proprietários" e "Animais de estimação" usam UUIDs. Digite o comando a seguir para criar um UUID para o proprietário e armazená-lo em uma variável.
owner_uuid=$(cat /proc/sys/kernel/random/uuid)
echo $owner_uuid
- Insira o proprietário Doug.
Observação: o parâmetro --data
permite passar os campos em pares de nome e valor.
gcloud spanner rows insert --table=Owners --database=pets-db --instance=test-spanner-instance --data=OwnerID=$owner_uuid,OwnerName=Doug
- Insira todos os cães de Doug com os seguintes comandos.
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Rusty',PetType='Dog',Breed='Poodle'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Duchess',PetType='Dog',Breed='Terrier'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gretyl',PetType='Dog',Breed='Shepherd'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gigi',PetType='Dog',Breed='Retriever'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Noir',PetType='Dog',Breed='Schnoodle'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Bree',PetType='Dog',Breed='Mutt'
- Vamos conferir se funcionou. Execute a consulta a seguir.
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT o.OwnerName, p.PetName, p.PetType, p.Breed FROM Owners as o JOIN Pets AS p ON o.OwnerID = p.OwnerID'
-
Também é possível acessar o console e visualizar os dados. Escolha Spanner na lista de produtos. Depois, selecione test-spanner-instance > pets-db (em "Bancos de dados") > Animais de estimação (em "Tabelas") > Dados no menu à esquerda.
-
Exclua o banco de dados com o comando a seguir.
gcloud spanner databases delete pets-db --instance=test-spanner-instance
-
No console, verifique se o banco de dados foi excluído.
-
Por fim, exclua a instância com o seguinte comando.
gcloud spanner instances delete test-spanner-instance --quiet
Observação: o parâmetro --quiet
executa o comando sem solicitar confirmação ao usuário. Ele também poderia ter sido adicionado ao comando anterior. Isso é útil se você estiver escrevendo um pipeline automatizado e não houver um usuário para perguntar.
- No console, verifique se a instância foi excluída.
Tarefa 2: automatizar a infraestrutura do Spanner usando o Terraform
- Crie uma pasta para seus arquivos do Terraform e mude para ela usando os comandos a seguir.
mkdir terraform-spanner
cd terraform-spanner
- Você precisa de alguns arquivos para o módulo do Terraform. Execute o comando a seguir para criar os arquivos vazios.
touch main.tf provider.tf terraform.tfvars variables.tf
- Clique no botão Abrir editor para abrir o editor de código. No painel "Explorer" à esquerda, encontre e abra a pasta
terraform-spanner
que você acabou de criar. Selecione o arquivo provider.tf
para abri-lo no editor e adicione o código a seguir.
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "~> 4.0"
}
}
}
provider "google" {
project = var.project_id
region = var.region
}
Observação: o código no bloco do Terraform faz o download do provedor do Google no site da Hashicorp. O código no bloco do provedor configura o provedor para usar o ID do projeto e a região corretos, que você vai definir como variáveis mais tarde.
- Abra o arquivo
main.tf
e adicione o seguinte bloco de recursos. Esse código cria a instância do Spanner.
resource "google_spanner_instance" "db-instance" {
name = "terraform-spanner-instance"
config = "regional-${var.region}"
display_name = "TF Spanner Instance"
processing_units = var.processing_units
force_destroy = var.force_destroy
}
- No mesmo arquivo, abaixo do código anterior, adicione o código a seguir, que cria o banco de dados "Animais de estimação". Observe o código DDL que define as tabelas.
resource "google_spanner_database" "test-database" {
instance = google_spanner_instance.db-instance.name
name = "pets-db"
# Can't run destroy unless set to false
deletion_protection = var.deletion_protection
ddl = [
"CREATE TABLE Owners (OwnerID STRING(36) NOT NULL, OwnerName STRING(MAX) NOT NULL) PRIMARY KEY (OwnerID)",
"CREATE TABLE Pets (PetID STRING(36) NOT NULL, OwnerID STRING(36) NOT NULL, PetType STRING(MAX) NOT NULL, PetName STRING(MAX) NOT NULL, Breed STRING(MAX) NOT NULL) PRIMARY KEY (PetID)",
]
}
- Abra o arquivo
variables.tf
. Nesse arquivo, você declara as variáveis usadas no módulo do Terraform. Adicione este código:
variable "deletion_protection" {
description = "If set to true, you cannot run terraform destroy if there are databases created."
type = bool
default = false
}
variable "force_destroy" {
description = "If set to true, running terraform destroy will delete all backups."
type = bool
default = true
}
variable "processing_units" {
type = number
default = 100
}
variable "project_id" {
description = "The GCP Project ID."
type = string
}
variable "region" {
type = string
}
- Todas as variáveis, exceto
project_id
e region
, têm padrões. Use o arquivo terraform.tfvars
para definir os valores das variáveis. Abra o arquivo e adicione o seguinte código:
project_id = "{{{project_0.project_id|placeholder_project_id}}}"
region = "{{{project_0.default_region|place_holder_text}}}"
- Vamos ver se funciona. Clique no botão Abrir terminal. É possível que você precise voltar para a guia original se o editor abrir uma nova guia ou janela. No prompt de comando, digite:
terraform init
- Supondo que não tenha havido erros com o comando anterior, digite o seguinte e analise a saída. Ele deve informar que dois recursos serão adicionados.
terraform plan
- Por fim, digite o comando a seguir para criar a instância do Spanner e o banco de dados "Animais de estimação". Digite
yes
quando solicitado.
terraform apply
-
Espere o comando do Terraform terminar. No console, acesse o serviço Spanner e verifique se a instância e o banco de dados foram criados. Não há um botão de atualização, então talvez seja necessário clicar em outro produto e depois voltar ao Spanner para atualizar a lista de instâncias.
-
Volte ao terminal e digite o comando a seguir para excluir a instância do Spanner.
terraform destroy -auto-approve
Parabéns! Você automatizou a criação de instâncias e bancos de dados do Spanner usando o SDK Google Cloud, a interface de linha de comando (CLI) e o Terraform.
Terminar o laboratório
Após terminar seu laboratório, clique em End Lab. O Qwiklabs removerá os recursos usados e limpará a conta para você.
Você poderá classificar sua experiência neste laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Submit.
O número de estrelas indica o seguinte:
- 1 estrela = muito insatisfeito
- 2 estrelas = insatisfeito
- 3 estrelas = neutro
- 4 estrelas = satisfeito
- 5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Support.
Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.