Criar uma configuração do Terraform
Ao organizar soluções do catálogo de serviços para a sua organização, pode criar uma configuração do Terraform, ou config, que os seus utilizadores implementam através do Terraform. Depois de criar a configuração, pode partilhá-la com os utilizadores atribuindo-a a catálogos.
Neste guia, usa o Cloud Build para executar comandos do Terraform na versão mais recente da imagem Docker do Terraform e usa o Cloud Storage para armazenar e gerir recursos do Terraform, como módulos e ficheiros de estado.
Para ver recursos e orientações sobre a utilização do Terraform, consulte o artigo Usar o Terraform com Google Cloud.
Antes de começar
Tem de ter as seguintes funções de gestão de identidade e de acesso (IAM):
- Administrador do catálogo OU Gestor do catálogo para a Google Cloud organização associada ao Google Cloud projeto que tem o Service Catalog ativado. Se não tiver esta função, contacte o administrador da organização para pedir acesso.
- Administrador de armazenamento para o projeto onde quer criar a sua solução. Google Cloud Se a configuração do Terraform estiver num projeto diferente, também tem de ter a função de administrador do armazenamento para o projeto que contém a configuração do Terraform.
- Editor do Cloud Build para o Google Cloud projeto onde quer criar a solução.
Se planeia usar a sua própria conta de serviço, também tem de ter a função Utilizador da conta de serviço para o Google Cloud projeto que contém a conta de serviço que planeia usar.
Se não tiver estas funções, contacte o administrador organizacional para pedir acesso.
Se planeia usar a sua própria conta de serviço, esta tem de ter as seguintes funções de IAM:
- Administrador de armazenamento para o projeto onde quer criar a sua solução. Google Cloud Se a configuração do Terraform estiver num projeto diferente, a sua conta de serviço também tem de ter a função Leitor de objetos de armazenamento para o projeto que contém a configuração do Terraform.
- Logs Writer para o Google Cloud projeto onde quer criar a sua solução.
Se não tiver estas funções, contacte o administrador organizacional para pedir acesso.
Configure o Cloud Build no projeto onde está a criar a configuração:
-
Enable the Cloud Build API.
A ativação da API cria automaticamente uma conta de serviço do Cloud Build que usa no passo seguinte. - Aceda à página Cloud Build.
- No painel do lado esquerdo, selecione Definições.
- Use a conta de serviço facultada na secção Email da conta de serviço.
- Se não estiver a usar a sua própria conta de serviço, conceda as seguintes funções do IAM à conta de serviço. Para ver os passos para conceder funções, consulte o artigo Configurar o acesso para a conta de serviço do Cloud Build.
- Editor do projeto
(
roles/editor
) - Administrador de armazenamento
(
roles/storage.admin
)
- Editor do projeto
(
-
Carregar os ficheiros de configuração para o Cloud Storage
Utiliza o Cloud Storage para gerir os seus ficheiros de configuração do Terraform para o Service Catalog.
Criar um contentor do Cloud Storage
Para configurar o Cloud Storage, crie um contentor no mesmo projeto onde ativou o Service Catalog para a sua organização:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
-
In the Get started section, do the following:
- Enter a globally unique name that meets the bucket naming requirements.
- To add a
bucket label,
expand the Labels section ( ),
click add_box
Add label, and specify a
key
and avalue
for your label.
-
In the Choose where to store your data section, do the following:
- Select a Location type.
- Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
- If you select the dual-region location type, you can also choose to enable turbo replication by using the relevant checkbox.
- To set up cross-bucket replication, select
Add cross-bucket replication via Storage Transfer Service and
follow these steps:
Set up cross-bucket replication
- In the Bucket menu, select a bucket.
In the Replication settings section, click Configure to configure settings for the replication job.
The Configure cross-bucket replication pane appears.
- To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
- To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
- Click Done.
-
In the Choose how to store your data section, do the following:
- Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
- To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
- In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
-
In the Choose how to protect object data section, do the
following:
- Select any of the options under Data protection that you
want to set for your bucket.
- To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
- To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
- To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
- To enable Object Retention Lock, click the Enable object retention checkbox.
- To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
- To choose how your object data will be encrypted, expand the Data encryption section (Data encryption method. ), and select a
- Select any of the options under Data protection that you
want to set for your bucket.
-
In the Get started section, do the following:
- Click Create.
Ativar o controlo de versões de objetos
Tem de usar a criação de versões de objetos para o seu contentor para proteger a configuração do Terraform contra a eliminação ou a substituição. Para ativar o controlo de versões de objetos, consulte a documentação do Cloud Storage sobre a utilização do controlo de versões de objetos.
Conceder acesso ao seu contentor
Quando os utilizadores na sua organização implementam a configuração, a conta de serviço do Cloud Build tem de ter acesso de leitura ao seu contentor. Se o seu contentor estiver armazenado no mesmo Google Cloud projeto onde os utilizadores implementam a configuração, então a conta de serviço já tem este acesso.
Se os seus utilizadores estiverem a implementar a configuração numGoogle Cloud projeto diferente, conceda acesso ao contentor através de um dos seguintes métodos:
Conceda a função Storage Object Viewer (
roles/storage.objectViewer
) às contas de serviço do Cloud Build dos seus utilizadores ou a um Google Cloud recurso onde os seus utilizadores implementam configurações do Terraform, como um projeto, uma pasta ou uma organização.Use uma lista de controlo de acesso (LCA) para gerir o acesso ao contentor.
Para ver detalhes sobre a gestão do acesso a contentores, consulte a Vista geral do controlo de acesso do Cloud Storage.
Criar e carregar um módulo do Terraform
Depois de configurar o contentor do Cloud Storage, tem de criar e carregar um módulo do Terraform, que é um contentor de todos os seus ficheiros de configuração. O Service Catalog usa o módulo para gerar automaticamente um ficheiro de esquema JSON para definir as variáveis da sua configuração.
Quando chamar módulos fora do diretório atual, use o caminho remoto em vez de um caminho relativo. Por exemplo, em vez de
source = "../../"
, use source = "GoogleCloudPlatform/cloud-run/google"
.
Para módulos de exemplos de utilização Google Cloud comuns, consulte os projetos e módulos do Terraform para Google Cloud.
O seguinte exemplo de código ilustra um ficheiro de configuração do Terraform, main.tf
:
variable "machine_type" {
type = string
default = "n1-standard-1"
}
variable "zone" {
type = string
default = "us-central1-a"
}
variable "deployment_identifier" {
description = "The unique name for your instance"
type = string
}
resource "google_compute_instance" "default" {
name = "vm-${var.deployment_identifier}"
machine_type = var.machine_type
zone = var.zone
boot_disk {
device_name = "boot"
auto_delete = true
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
Depois de criar o módulo, comprima os ficheiros num ficheiro ZIP. Certifique-se de que o módulo está armazenado na raiz do ficheiro ZIP.
Para garantir o armazenamento adequado do módulo quando comprimir os ficheiros do Terraform, execute o seguinte comando:
none
zip solution.zip file1.tf file2.tf file3.tf
Em seguida, carregue o ficheiro ZIP para o seu contentor. Para ver os passos para carregar o ficheiro ZIP, consulte a documentação do Cloud Storage sobre carregar objetos.
Criar a configuração no catálogo de serviços
Depois de configurar um contentor do Cloud Storage com o seu módulo do Terraform, pode criar uma solução do Service Catalog que inclua o contentor.
Para criar a configuração do Terraform como uma solução do Service Catalog:
Aceda à página Soluções do administrador do catálogo de serviços na Google Cloud consola.
Aceda à página SoluçõesPara escolher o Google Cloud projeto, clique em Selecionar.
Clique em Criar solução. Na lista pendente, selecione Criar configuração do Terraform.
Introduza um nome, uma descrição e um slogan para a sua configuração do Terraform. O slogan é uma breve descrição de uma solução que os utilizadores veem enquanto exploram o catálogo de serviços.
No campo Link para a configuração do Terraform, indique o link para o contentor do Cloud Storage que contém o ficheiro ZIP do módulo do Terraform, como
gs://my-terraform-bucket/my-zip-file.zip
.Opcionalmente, carregue um ícone para a solução. As dimensões recomendadas para um ícone são 80 x 80 píxeis.
Opcionalmente, introduza um link de apoio técnico e informações de contacto do criador.
Opcionalmente, adicione um link para a documentação da solução.
Selecione a versão do Terraform que quer usar para implementar a solução.
Opcionalmente, pode fornecer a sua própria conta de serviço clicando na caixa de verificação junto a Selecionar ou introduzir a sua própria conta de serviço. Se a sua conta de serviço estiver localizada no mesmo projeto onde está a criar a sua solução, selecione Selecionar uma conta de serviço do projeto atual e selecione a sua conta de serviço no menu pendente. Google Cloud Se a sua conta de serviço estiver localizada num projeto Google Cloud diferente da sua solução, selecione Introduza um email de conta de serviço de qualquer projeto e introduza o email da sua conta de serviço.
Clique em CRIAR.
A solução é criada e aparece na página Soluções do administrador do catálogo de serviços.
A captura de ecrã seguinte ilustra a criação de uma configuração do Terraform:

Passos seguintes
- Atribua a configuração do Terraform a um catálogo para que os utilizadores na sua organização possam aceder à solução e implementá-la.
- Atualize uma solução com os detalhes de configuração mais recentes do Terraform.