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 Cloud Build para executar comandos do Terraform na versão mais recente da imagem Docker do Terraform e usa 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 Usar o Terraform com Google Cloud.
Antes de começar
É necessário ter os seguintes papéis do Identity and Access Management (IAM):
- Administrador de catálogo OU Gerente de catálogo para a Google Cloud organização associada ao Google Cloud projeto 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 Google Cloud projeto 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 Administrador do Storage para o projeto que contém a configuração do Terraform.
- Cloud Build Editor para o Google Cloud projeto em que você quer criar a solução.
Se você planeja usar sua própria conta de serviço, também precisará ter o papel Usuário da conta de serviço para o Google Cloud projeto 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 Google Cloud projeto 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 Leitor de objetos do Storage para o projeto que contém a configuração do Terraform.
- Gravador de registros para o Google Cloud projeto 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:
-
Ative a API Cloud Build.
A ativação da API cria automaticamente uma conta de serviço do Cloud Build que você usa na etapa a seguir.Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis. - 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 ver 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:
- No Google Cloud console, acesse a página Buckets do Cloud Storage.
- Clique em Criar.
- Na página Criar um bucket, insira as informações do seu bucket. Para ir à próxima
etapa, clique em Continuar.
-
Na seção Introdução, faça o seguinte:
- Insira um nome globalmente exclusivo que atenda aos requisitos de nome de bucket.
- Para adicionar um
rótulo de bucket,
expanda a seção Rótulos (),
clique em add_box
Adicionar rótulo e especifique uma
keye umvaluepara o rótulo.
-
Na seção Escolha onde armazenar os dados, faça o seguinte:
- Selecione um tipo de local.
- Escolha um local em que os dados do bucket sejam armazenados permanentemente no menu suspenso Tipo de local.
- Se você selecionar o tipo de local birregional, também poderá ativar a replicação turbo usando a caixa de seleção relevante.
- Para configurar a replicação entre buckets, selecione
Adicionar replicação entre buckets usando o Serviço de transferência do Cloud Storage e
siga estas etapas:
Configurar a replicação entre buckets
- No menu Bucket, selecione um bucket.
Na seção Configurações de replicação, clique em Configurar para definir as configurações do job de replicação.
O painel Configurar a replicação entre buckets é exibido.
- Para filtrar objetos a serem replicados por prefixo de nome de objeto, digite um prefixo que você quer incluir ou excluir objetos e clique em Adicionar um prefixo.
- Para definir uma classe de armazenamento para os objetos replicados, selecione uma classe de armazenamento no menu Classe de armazenamento. Se você pular essa etapa, os objetos replicados vão usar a classe de armazenamento do bucket de destino por padrão.
- Clique em Concluído.
-
Na seção Escolha como armazenar os dados, faça o seguinte:
- Selecione uma classe de armazenamento padrão para o bucket ou Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
- Para ativar o namespace hierárquico, na seção Otimizar o armazenamento para cargas de trabalho com uso intensivo de dados, selecione Ativar namespace hierárquico neste bucket.
- Na seção Escolha como controlar o acesso a objetos, selecione se o bucket aplica ou não a prevenção de acesso público, e selecione um método de controle de acesso para os objetos do bucket.
-
Na seção Escolha como proteger os dados de objetos, faça o
seguinte:
- Selecione qualquer uma das opções em Proteção de dados que você
quer definir para o bucket.
- Para ativar a exclusão reversível, clique na caixa de seleção Política de exclusão reversível (para recuperação de dados) e especifique o número de dias em que você quer reter objetos após a exclusão.
- Para definir o Controle de versão de objeto, clique na caixa de seleção Controle de versão de objeto (para controle de versão), e especifique o número máximo de versões por objeto e o número de dias após os quais as versões não atuais expiram.
- Para ativar a política de retenção em objetos e buckets, clique na caixa de seleção Retenção (para conformidade) e faça o seguinte:
- Para ativar o bloqueio de retenção de objetos, clique na caixa de seleção Ativar retenção de objetos.
- Para ativar o bloqueio de bucket, clique na caixa de seleção Definir política de retenção de bucket e escolha uma unidade e um período para o período de armazenamento.
- Para escolher como os dados dos objetos serão criptografados, expanda a Criptografia de dados seção () e selecione um Criptografia de dados método.
- Selecione qualquer uma das opções em Proteção de dados que você
quer definir para o bucket.
-
Na seção Introdução, faça o seguinte:
- Clique em Criar.
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 Google Cloud projeto em que os usuários implantam a configuração, então a conta de serviço já terá esse acesso.
Se os usuários estiverem implantando a configuração em outro Google Cloud projeto, 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 Google Cloud recurso em que os usuários implantem 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 comuns Google Cloud , consulte Blueprints 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 Google Cloud no console.
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 Google Cloud projeto em que você está criando a solução, selecione Selecionar uma conta de serviço do projeto atual e selecione a conta de serviço no menu suspenso. Se a conta de serviço estiver localizada em um projeto diferente Google Cloud da solução, selecione Inserir um e-mail de conta de serviço de qualquer projetoe insira o e-mail da 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:
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.