No artigo anterior, expliquei como criar imagens de máquina usando Packer e GCP. Neste, vou explicar como implantá-las usando Terraform Cloud.

Untitled

Configuração do Google Cloud

Aqui só precisamos de uma Conta de Serviço com Permissões de Editor. Você pode criar uma como expliquei no artigo anterior “Criando pipelines usando Gitlab CI para Terraform e GCP”.

Por favor, habilite também a API do Compute Engine.

Untitled

Como publicamos as imagens no projeto “DevOps”, se quisermos usá-las em outros projetos, precisamos conceder Permissão ao SA padrão do Google API dos projetos alvo no nosso projeto “DevOps” como “Usuário de Imagem”. Siga a documentação oficial: Usando Imagens de Outros Projetos.

Configuração do Terraform Cloud

Primeiro, crie dois conjuntos de variáveis, um para credenciais HCP e outro para credenciais GCP.

Variable Sets

Conjuntos de Variáveis

GCP

  • Variável: GOOGLE_CREDENTIALS
  • Valor: Json da Conta de Serviço sem quebras de linha.
  • Tipo: Sensível
  • Categoria: Ambiente

HCP

  • Variáveis: HCP_CLIENT_ID e HCP_CLIENT_SECRET
  • Valor: Crie um Principal de Serviço Hashicorp Cloud na Seção IAM e use esses valores.
  • Tipo: Sensível
  • Categoria: Ambiente

Agora, vamos configurar o espaço de trabalho.

  1. Vá para a página inicial, Crie um Projeto (ou use o padrão), e depois um espaço de trabalho, por exemplo:

Project Terraform Modules

Módulos Terraform do Projeto

  1. Estou usando meu repositório terraform-modules como exemplo, e criando um espaço de trabalho chamado dev  do tipo Fluxo de Trabalho VCS.

Untitled

Nas Configurações Avançadas, descrevi onde meu código dev está localizado. No meu repositório, ele está na subpasta infra/dev, e para o espaço de trabalho dev, também gostaria de Aplicar mudanças Automaticamente.

Untitled

Espaço de Trabalho Criado.

Untitled

  1. Vamos adicionar nossas variáveis de espaço de trabalho. Para isso, clique no namespace e depois no botão Configurar Variáveis.

Configure variables

Configurar variáveis

No meu caso, apenas duas:

Variables

Variáveis

Agora, podemos ver em nossos Pull Requests o Terraform Cloud sendo executado:

PR Check

Verificação PR

PR Plan

Plano PR

E, após o merge, outra execução, agora, aplicando o código.

Untitled

Podemos ver nossa VM criada no GCP:

Prometheus VM

VM Prometheus

E então, podemos acessar o IP público e verificar que nosso Servidor Prometheus está funcionando corretamente

Untitled

Untitled

Dicas/Próximos Passos

  • Crie subpastas para outros ambientes.
  • Crie espaços de trabalho para outros ambientes.
  • Se PROD, por favor, considere usar Aplicação Manual.
  • Refine quais arquivos/diretórios de código serão observados para acionar as execuções (configuração do Fluxo de Trabalho)


Suporte

Se você achar meus posts úteis e gostaria de me apoiar, por favor, me compre um café: Anderson Dario é blog pessoal e blog de tecnologia

Isso é tudo. Obrigado.