Terraform é uma ferramenta DevOps utilizado para gerenciar infraestrutura declarativa – infraestrutura como código (Infrastructure as Code).

Terraform é uma ferramenta podera que simplifica e acelera a configuração de ambientes baseados em nuvem, permitindo configurar infraestrutura e gerenciar recursos de Cloud como Amazon Web Services (AWS), Microsoft Azure, Google Cloud e outros ambientes cloud.

Definição do que é o Terraform

Terraform é uma ferramenta de gerenciamento de infraestrutura feita pela HashiCorp, que permite provisionar, gerenciar e manter recursos de nuvem como servidores, rede, armazenamento (storage), dentre outros recursos, de maneira centralizada usando um conjunto de código.

Desta maneira é importante entender que o Terraform é uma ferramenta, um programa de linha de comando e um aplicativo baseado em nuvem que você executa para definir e fazer alterações em sua infraestrutura, mas o Terraform também é uma linguagem que define essas alterações.

Para que serve o Terraform

Terraform serve para gerenciar a própria infraestrutura base.

Por exemplo, criar uma instância de servidor e colocá-la atrás de um balanceador de carga. O Terraform não pode realmente alterar o que está sendo executado neste servidor depois que o mesmo é implantado; para isso, você precisará de uma ferramenta de gerenciamento de configuração.

Isto significa que o Terraform criará o servidor, e para configurar este servidor, por exemplo, como um servidor web, você poderá usar algo como o Puppet configurando o código do seu aplicativo específico em execução nele.

O Terraform é como um quadro em branco, que precisa de outras ferramentas para pintar o quadro. É possível executar uma ferramenta como o Puppet em um sistema usando um recurso do Terraform chamado provisionadores.

A documentação oficial do Terraform descreve os provisionadores como último recurso, embora você possa entender como eles podem ser poderosos e úteis se você já estiver usando um como gerenciamento de configuração.

Então, se não usarmos o gerenciamento de configuração, qual é a nossa outra opção de uso para o Terraform?

Bem, o Terraform é muito útil para implantar imagens prontas de servidor, onde toda a configuração já está definida.

Para isso é necessário criar sua imagem base, e há outra ótima ferramenta HashiCorp para isso, chamada Packer.

Infraestrutura Imutável

Se toda a configuração estiver correta, no contexto do nosso exemplo, com um balanceador de carga e um aplicativo que pode tolerar o ciclo de instâncias de servidor, você pode usar o Terraform para manter e atualizar sistemas, destruindo-os e substituindo-os por novas instâncias.

Isto é chamado de infraestrutura imutável, onde os discos do sistema são configurados somente leitura, a configuração e o software só podem ser atualizados substituindo a instância do servidor.

Mesmo que você não vá a esse extremo, ser capaz de jogar fora e substituir qualquer instância livremente é uma mudança total no jogo. Isto reduz drasticamente a confiança em relação à estabilidade do servidor.

Terraform e Contêineres

Finalmente, chegamos aos contêineres.

Terraform é capaz de trabalhar diretamente com Docker e Kubernetes, oferecendo abordagens para cargas de trabalho baseadas em contêineres.

Esse suporte para Kubernetes pode inclusive ser combinado com o Kubernetes Service da Amazon ou outro provedor de nuvem. Você pode usar o Terraform para provisionar um cluster Kubernetes em um provedor de nuvem e, em seguida, usar o provedor Terraform Kubernetes para provisionar recursos nesse cluster.

Considerações Finais

Em resumo, o Terraform é uma solução abrangente e robusta para gerenciar sua infraestrutura em um ambiente de nuvem, permitindo não apenas a criação e manutenção de recursos, mas também a integração com outras ferramentas vitais, como gerenciadores de configuração e sistemas de contêinerização. Ele oferece uma abordagem eficaz para implementar, escalar e manter sistemas de forma declarativa. Seu suporte amplo para vários provedores de nuvem e capacidade de trabalhar com tecnologias como Docker e Kubernetes torna-o uma ferramenta essencial no kit de ferramentas de qualquer profissional DevOps.

Portanto, se você ainda não incorporou o Terraform em seu fluxo de trabalho, agora pode ser o momento perfeito para fazê-lo.