Como criar uma configuração do Terraform
Ao selecionar soluções do catálogo de serviços para a organização, é possível criar uma configuração do Terraform, que os usuários implantam usando o Terraform. Depois de criar a configuração, é possível compartilhá-la com os usuários atribuindo-a aos catálogos.
Neste guia, você usa o Cloud Build para executar comandos do Terraform na versão mais recente da imagem do Docker do Terraform e usa o Cloud Storage para armazenar e gerenciar recursos do Terraform, como módulos e arquivos de estado.
Para recursos e orientações sobre como usar o Terraform, consulte Como usar o Terraform com Google Cloud.
Antes de começar
É necessário ter os seguintes papéis de gerenciamento de identidade e acesso (IAM):
- Administrador de catálogo OU Gerenciador de catálogo para a Google Cloud organização associada ao projeto Google Cloud que tem o catálogo de serviços ativado. Se você não tiver esse papel, entre em contato com o administrador da organização para solicitar o acesso.
- Administrador do Storage para o projeto Google Cloud em que você quer criar a solução. Se a configuração do Terraform estiver em um projeto diferente, você também precisará ter o papel de administrador do Storage no projeto que contém a configuração do Terraform.
- Editor do Cloud Build para o projeto Google Cloud em que você quer criar a solução.
Se você planeja usar sua própria conta de serviço, também precisa ter o papel de Usuário da conta de serviço para o projeto Google Cloud que contém a conta de serviço que você planeja usar.
Se você não tiver esses papéis, entre em contato com o administrador da organização para solicitar o acesso.
Se você planeja usar sua própria conta de serviço, ela precisa ter os seguintes papéis do IAM:
- Administrador do Storage para o projeto Google Cloud em que você quer criar a solução. Se a configuração do Terraform estiver em um projeto diferente, a conta de serviço também precisará ter o papel de Visualizador de objetos do Storage para o projeto que contém a configuração do Terraform.
- Logs Writer para o projetoGoogle Cloud em que você quer criar a solução.
Se você não tiver esses papéis, entre em contato com o administrador da organização para solicitar o acesso.
Configure o Cloud Build no projeto em que você está criando a configuração:
-
Enable the Cloud Build API.
A ativação da API cria automaticamente uma conta de serviço do Cloud Build que você usa na próxima etapa. - Acesse a página do Cloud Build.
- No painel à esquerda, selecione Configurações.
- Use a conta de serviço fornecida na seção E-mail da conta de serviço.
- Se você não estiver usando sua própria conta de serviço, conceda os seguintes
papéis do IAM à conta de serviço. Para conferir as etapas de concessão
de papéis, consulte
Como configurar o acesso à conta de serviço do Cloud Build.
- Editor do projeto
(
roles/editor
) - Administrador do Storage
(
roles/storage.admin
)
- Editor do projeto
(
-
Como fazer upload dos arquivos de configuração para o Cloud Storage
Use o Cloud Storage para gerenciar os arquivos de configuração do Terraform para o catálogo de serviços.
Crie um bucket do Cloud Storage
Para configurar o Cloud Storage, crie um bucket no mesmo projeto em que você ativou o catálogo de serviços para a organização:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Como ativar o controle de versão de objeto
Use o controle de versões de objeto do bucket para evitar que a configuração do Terraform seja excluída ou substituída. Para ativar o controle de versões de objeto, consulte a documentação do Cloud Storage em Como usar o controle de versões de objeto.
Como conceder acesso ao bucket
Quando os usuários da organização implantam a configuração, a conta de serviço do Cloud Build precisa ter acesso de leitura ao bucket. Se o bucket estiver armazenado no mesmo projeto do Google Cloud em que os usuários implantam a configuração, a conta de serviço já terá esse acesso.
Se os usuários estiverem implantando a configuração em outro projeto do Google Cloud, conceda acesso ao bucket usando um dos seguintes métodos:
Conceda o papel Leitor de objetos do Storage (
roles/storage.objectViewer
) às contas de serviço do Cloud Build dos usuários ou a um recurso Google Cloud em que os usuários implantam configurações do Terraform, como um projeto, uma pasta ou uma organização.Use uma lista de controle de acesso (ACL, na sigla em inglês) para gerenciar o acesso ao bucket.
Para detalhes sobre como gerenciar o acesso a buckets, consulte a Visão geral do controle de acesso do Cloud Storage.
Como criar e fazer upload de um módulo do Terraform
Depois de configurar o bucket do Cloud Storage, crie e faça o upload de um módulo do Terraform, que é um contêiner de todos os arquivos de configuração. O catálogo de serviços usa o módulo para gerar automaticamente um arquivo de esquema JSON, que define as variáveis da configuração.
Ao 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 casos de uso Google Cloud comuns, consulte Projetos e módulos do Terraform para Google Cloud.
O exemplo de código a seguir ilustra um arquivo 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, compacte os arquivos em um arquivo ZIP. Verifique se o módulo está armazenado na raiz do arquivo ZIP.
Para garantir o armazenamento adequado do módulo ao compactar os arquivos do Terraform, execute o seguinte comando:
none
zip solution.zip file1.tf file2.tf file3.tf
Em seguida, faça upload do arquivo ZIP no bucket. Para ver as etapas de upload do arquivo ZIP, consulte a documentação do Cloud Storage sobre como fazer upload de objetos.
Como criar a configuração no catálogo de serviços
Depois de configurar um bucket do Cloud Storage com o módulo do Terraform, crie uma solução do catálogo de serviços que inclua o bucket.
Para criar a configuração do Terraform como uma solução do catálogo de serviços:
Acesse a página Soluções do administrador do catálogo de serviços no console do Google Cloud.
Acessar a página "Soluções"Para escolher o Google Cloud projeto, clique em Selecionar.
Clique em Criar solução. Na lista suspensa, selecione Criar configuração do Terraform.
Insira um nome, uma descrição e um tagline para a configuração do Terraform. O slogan é uma descrição breve de uma solução que os usuários veem ao navegar pelo catálogo de serviços.
No campo Link da configuração do Terraform, forneça o link para o bucket do Cloud Storage que contém o arquivo ZIP para o módulo do Terraform, como
gs://my-terraform-bucket/my-zip-file.zip
.Opcionalmente, faça upload de um ícone para a solução. As dimensões recomendadas para um ícone são 80 por 80 pixels.
Opcionalmente, insira um link de suporte e informações de contato do criador.
Opcionalmente, adicione um link da documentação da solução.
Selecione a versão do Terraform que você quer usar para implantar a solução.
Opcionalmente, você pode fornecer sua própria conta de serviço clicando na caixa de seleção ao lado de Selecionar ou inserir sua própria conta de serviço. Se a conta de serviço estiver localizada no mesmo projeto Google Cloud em que você está criando a solução, selecione Selecionar uma conta de serviço do projeto atual e selecione sua conta de serviço no menu suspenso. Se a conta de serviço estiver em um projeto Google Cloud diferente da solução, selecione Digitar um e-mail de conta de serviço de qualquer projeto e insira o e-mail 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 tela a seguir ilustra como criar uma configuração do Terraform:
![Criar uma configuração do Terraform](https://cloud.google.com/static/service-catalog/images/screen-privatecatalog-create-terraform.png?authuser=7&hl=pt-br)
Próximas etapas
- Atribua a configuração do Terraform a um catálogo para que os usuários na organização possam acessar e implantar a solução.
- Atualize uma solução com os detalhes mais recentes de configuração do Terraform.