Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 15, 2021 08:48 pm GMT

Iniciando com Atlantis

Esse o primeiro post de uma srie sobre o Atlantis, onde o intuito dar um mega salto no fluxo de trabalho de quem j utiliza Terraform no dia dia. Se voc j:

  • Utiliza Terraform para criar infraestrutura
  • Ainda usa o Terraform local
  • E sente falta de um ambiente mais colaborativo para desenvolver sua infraestrutura.

Essa srie para voc!

Vamos passar por alguns pontos bsicos de como a ferramenta funciona e at explorar alguns modos de deployment. Tudo isso com um repo no Github para te ajudar com configurao e exemplos.

Caso voc no tenha experincia prvia com Terraform, super recomendo o contedo do Igor Souza no Youtube. :)

O que o Atlantis

O Atlantis uma aplicao que automatiza atravs de Pull Requests a forma como rodamos o Terraform.

Gosto muito da definio do Matheus Fidelis, que o Atlantis permite fazer GitOps para Terraform.

Ele funciona ouvindo Webhooks de plataformas de Git como: Github, Gitlab ou do Bitbucket e retorna o output dos comandos terraform plan e terraform apply atravs de comentrios. Ou seja, todo fluxo de trabalho que antes era feito via CLI, terminal, pipeline do Jenkins, agora feito nos comentrios de uma Pull Request.


Exemplo de fluxo no trabalho.

De uma forma mais simples, o Atlantis atua como uma "ponte" entre o Terraform e a plataforma de Git tornando os plans e applies muito mais colaborativos. Mas por qu? Oras, infraestrutura como cdigo uma abordagem de automao de infraestrutura baseada em princpios de desenvolvimento de software, com reviews, testes, CI/CD e etc...

Antes de iniciar

Como mencionei acima, o Atlantis uma espcie de wrapper do Terraform, por isso, a partir do momento que o Atlantis adotado, ele quem define qual verso do Terraform est rodando e ele quem conhece as secrets e keys dos provedores de cloud, servios e etc...

Por isso, a primeira dica ficar de olho nas releases do projeto para saber se a ltima verso do Terraform j suportada pelo Atlantis. E no necessariamente utilizar a ltima verso do Atlantis requer que voc atualize seus projetos, por exemplo, possvel utilizar a ltima verso do Atlantis e para cada repo/projeto utilizar uma verso diferente do Terraform. Veremos sobre isso mais pra frente.

Um pouco de mundo real...

Para os projetos do time de e-commerce da Leroy Merlin, ns rodamos o Atlantis como container no Kubernetes, utilizamos Terraform Cloud como backend e uma abordagem com monorepo e multirepo. Alguns projetos como IAM, configurao do Vault e coisas relacionadas a sec, ficam fora do monorepo por uma questo de segurana.

Nos outros repositrios todo o time de engenharia possui acesso e cada mdulo e projeto, possui documentao para auxiliar a criar novos recursos.

Dependendo do repositrio e do projeto necessrio que haja no mnimo "x" aprovaes para rodar um atlantis apply, em outros necessrio aprovao de CODEOWNERS. O ponto que no importa sua estrutura atual ou o que voc est planejando, o Atlantis vai suportar.

De uma forma grfica, o Atlantis funciona assim no nosso time:


Fluxo do Atlantis no time de e-commerce da Leroy Merlin.

Indo mais a fundo

Nessa srie de posts, utilizarei Github, Kubernetes e AWS. E durante ela, voc ir encontrar nesse repo mais informaes e formas de deploy.

Requerimentos

Git

O Atlantis suporta as principais plataformas de Git como:

  • Github
  • Gitlab
  • Bitbucket
  • Azure DevOps

Backend

O Atlantis suporta todos os tipos de backend, menos o local, j que o Atlantis no tem um banco de dados e no commita o state no git (o que um mega anti-pattern).

Estrutura de diretrio e repositrios

Qualquer seja a estrutura utilizada, o Atlantis vai rodar sem problemas. possvel utilizar:

  • Monorepo com vrios projetos
  • nico repo com um nico projeto
  • Monorepo com vrios projetos e + mdulos
  • Multirepo (basta ter um webhook para cada um deles)

possvel tambm utilizar Workspaces.

Arquitetura

O Atlantis uma aplicao desenvolvida em Go. Com um binrio por volta de 40MB e com uma imagem docker por volta de 250MB super simples de subi-lo no Kubernetes, ECS / Fargate ou instal-lo em uma instncia.

A comunicao entre o Atlantis e o plataforma de Git intrnseca. Por exemplo, o Atlantis precisa receber os Webhooks e fazer chamadas para as APIs da plataforma de Git utilizada. Em caso de servios externos, o Atlantis precisa responder por uma URL vlida, j em casos de servios internos como Github Enterprise, Gitlab Enterprise e Bitbucket Server, isso j no necessrio.

Importante
O Atlantis no possui um banco de dados, todos os arquivos de plan, binrios dos providers e etc so salvos em disco.

Configurao

Existem alguns mtodos de configurar o Atlantis:

  • Utilizando flags no comando atlantis server, onde tambm possvel utilizar arquivo de configurao e ENV VARs. Por exemplo:
# Flagsatlantis server --gh-token="token/123456/ABCDE"# ENV VARATLANTIS_GH_TOKEN='token/123456/ABCDE' atlantis server
  • Arquivo de configurao para cada repo. Onde o arquivo de configurao repos.yml fica junto do server.
  • Arquivo de configurao em cada repositrio. Onde cada repo possui o seu atlantis.yml.

Utilizao

Como deu pra notar, a principal diferena que a partir de agora, o comando para rodar o Terraform mudou. O comando a ser chamado agora o atlantis. Existem trs principais subcomandos:

  • atlantis plan que roda o terraform plan na branch de uma determinada Pull Request. possvel configurar para rodar de forma automtica a cada novo commit, evitando intervenes manuais.
  • atlantis apply que roda o terraform apply no plan executado anteriormente.
  • atlantis help que mostra a ajuda do Atlantis.

E claro, existem algumas flags em comum no plan e no apply, que no caso so as:

  • -w que roda o plan ou apply contra um determinado workspace.
  • -d que roda o plan ou apply de um projeto dentro de um diretrio. Ele importante quando a uma criao, alterao ou deleo de vrios recursos em vrios projetos em um nico Pull Request. Se no especificado, roda em todos diretrios novos.
# Roda um plan para no diretrio app1atlantis plan -d app1# Roda um plan no diretrio aws/iamatlantis plan -d aws/iam
  • E existe o -p que roda plan e apply para um projeto.

possvel tambm utilizar flags do Terraform, como -target, -var e -var-file.

Gerncia do state

Assim como o Terraform, o Atlantis trabalha com state locking. Esse processo ocorre toda vez que um atlantis plan executado e o state s ser liberado quando a Pull Request for mergeada, fechada ou o plan deletado de forma manual.

Vale a pena reforar que esse state locking do Atlantis e no do Terraform, onde o state do Atlantis feito para prevenir vrias Pull Requests trabalhando no mesmo projeto e o state do Terraform feito para prevenir mudanas durante um terraform apply. Mais infos aqui.

Concluindo

Nessa primeira parte, abordamos o bsico do Atlantis, como ele funciona, qual problema ele resolve e os motivos de utiliz-lo.

Nos prximos posts iremos nos aprofundar nos passos de instalao, configurao e como trabalhar de uma forma inteligente com Terraform.

At mais!


Original Link: https://dev.to/brunopadz/iniciando-com-atlantis-5dcd

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To