
Muito se fala sobre o Terraform no mundo DevOps. Também, não é para menos: trata-se de uma ferramenta de software open source “mágica” que permite provisionar de forma programática os recursos físicos que uma aplicação requer para ser executada – valendo-se para isso de apenas algumas poucas linhas de código. Por essa razão, é conhecida como uma ferramenta de “infraestrutura como código” (IaC).
Também não é uma ferramenta difícil de usar. É somente quando começamos a adicionar complexidade a ela, como a possibilidade de colaborar com outros membros do time e aproveitar módulos externos, que a coisa pode ficar realmente bem mais complicada.
E como o Terraform por si só automatiza muitas tarefas, sendo capaz de criar, alterar e versionar recursos de nuvem, pode ser considerado um enorme aliado nas práticas de CI/CD com vistas a aumentar o desempenho da sua organização e garantir deploys mais consistentes.
Neste post, vamos abordar os principais casos de uso dessa poderosa ferramenta de infraestrutura como código.
Casos de uso do Terraform
Provisionamento de nuvens públicas. A infraestrutura como código para os principais provedores de nuvem, como AWS, Google Cloud e e Azure é o foco principal do Terraform, que possibilita o uso de nuvens públicas através de um provider. Um provider no Terraform pode ser pensado como uma espécie de plugin que empacota as APIs de uma determinada organização para criar uma sintaxe declarativa no Terraform.
Os providers que cobrem as principais nuvens públicas são todos open source, e são gerenciados de perto pela Hashicorp (responsável pelo desenvolvimento do Terraform). Como resultado, os providers recebem atualizações frequentes para corresponder às atualizações dos provedores de nuvem.
Implementação multi-cloud. Um dos principais atrativos do Terraform é justamente o fato de funcionar para todos os provedores de nuvem ao mesmo tempo. Ser capaz de fazer o deploy de recursos em vários provedores de nuvem é útil, entre outras razões, porque os engenheiros de software podem usar a mesma sintaxe e cadeia de ferramentas, sem a necessidade de se familiarizar com outras ferramentas e tecnologias.
Uma estratégia bastante conhecida para mitigar desastres é o uso de várias nuvens. Assim, se uma delas falhar, uma aplicação seguirá funcionando normalmente, bastando para isso alternar para outro servidor de nuvem. É aí que entra a resiliência do Terraform: ele pode fazer o deploy de aplicações em diferentes nuvens, tudo feito com precisão e rapidez, e de quebra eliminando qualquer possível erro humano. Na prática, você nem perceberá que está trabalhando com nuvens diferentes, já que a ferramenta irá se encarregar de todo o trabalho árduo sem deixar rastros.
Kubernetes. O Terraform pode ser usado para gerenciar a infraestrutura do Kubernetes, ajudando o engenheiro de software a orquestrar suas aplicações e a executá-las em escala. Isso alivia alguns dos desafios da execução do Kubernetes, incluindo problemas como detectar desvios de configuração (configuration drifts), ou seja, alterações planejadas ou não planejadas.
Por exemplo, se você atualizar um recurso, como excluí-lo sem alterar o arquivo YAML original, o Kubernetes não dará o aviso. Integrar o Terraform para ajudar a gerenciar recursos do Kubernetes pode resolver esse e outros problemas comuns. O fluxo de trabalho do Terraform, especificamente nos estágios de Plan e Apply, é capaz de detectar alterações de configuração e oferecer a possibilidade de revisá-las antes de aplicá-las à sua próxima orquestração, algo que o comando kubectl não irá fazer.
Conclusão
O Terraform é uma poderosa ferramenta open source que facilita enormemente não apenas o gerenciamento e provisionamento de recursos na nuvem, como também a implementação de melhores práticas DevOps. Afinal, tanto os times de desenvolvimento tornam-se mais envolvidos na gestão de configuração, como os times de operações passam a se envolver mais cedo no processo de desenvolvimento. Entre em contato conosco para saber mais como usamos o Terraform para otimizar as soluções oferecidas pela O2B.

