Há muito tempo atrás, em um datacenter muito, muito distante, um antigo grupo de seres poderosos conhecidos como “sysadmins” costumava implantar a infraestrutura manualmente.
Cada servidor, cada banco de dados, cada balanceador de carga e cada bit de configuração de rede era criado e gerenciado manualmente. Foi uma era sombria e assustadora: medo do tempo de inatividade, medo de configuração incorreta acidental, medo de implantações lentas e frágeis e medo do que aconteceria se os administradores de sistema caíssem no lado negro (ou seja, tirassem férias).
A boa notícia é que, graças ao movimento DevOps, agora existe uma maneira melhor de fazer as coisas: Terraform.
Se você é Engenheiro de Dados que trabalha com provedores de Cloud Computing, provavelmente já passou pela situação de ter construir a infraestrutura do seu projeto e ter dificuldade em criar tudo no seu provedor de nuvem e manter as mesmas versões em todos os lugares. Infrastructure as Code (IaC) é a prática de automatizar a criação e manutenção de infraestrutura (arquivos, buckets, bancos de dados…) em seu ecossistema por meio de código.
Terraform é uma ferramenta de código aberto criada pela HashiCorp que permite definir a infraestrutura como código usando uma linguagem simples e declarativa e implantar e gerenciar essa infraestrutura em uma variedade de provedores de nuvem pública (por exemplo, Amazon Web Services [AWS], Microsoft Azure , Google Cloud Platform, DigitalOcean) e plataformas de nuvem privada e virtualização (por exemplo, OpenStack, VMware) usando alguns comandos.
Por exemplo, em vez de clicar manualmente em uma página web de configuração de um serviço em nuvem ou executar dezenas de comandos, aqui está todo o código necessário para configurar um servidor na AWS:
provider “aws” {
region = “us-east-2”
}
resource “aws_instance” “exemplo” {
ami = “ami-9jk825ca2d3203ac1”
instance_type = “t2.micro”
}
E então fazer o deploy com esses 2 comandos:
terraform init
terraform apply
Graças à sua simplicidade e poder, o Terraform emergiu como um participante importante no mundo do DevOps. Ele permite que você substitua as partes tediosas, frágeis e manuais do gerenciamento de infraestrutura por uma base sólida e automatizada sobre a qual você pode construir todas as suas outras práticas de DevOps (por exemplo, teste automatizado, Integração Contínua, Entrega Contínua) e ferramentas (por exemplo, Docker , Chef, Puppet).
Se você está procurando uma ferramenta que possa ajudá-lo a construir, alterar e também controlar a versão da infraestrutura, não há plataforma melhor do que o Terraform. Na Engenharia de Dados o Terraform pode ajudar a reduzir o tempo de implantação da infraestrutura, reduzir erros de configuração e, consequentemente, aumentar a eficiência.
Esta é uma ferramenta independente de plataforma que é muito segura e eficiente, sendo uma das melhores ferramentas de código aberto e foi desenvolvida como uma multinuvem da Hashicorp e como uma solução de infraestrutura como código que usa a linguagem de configuração declarativa da Hashicorp. Uma das principais características dessa ferramenta é que ela ajuda no gerenciamento de vários provedores de serviços conhecidos, incluindo AWS, Azure e GCP, e isso também é ótimo para usar com as soluções domésticas.
Uma das principais características dessa ferramenta é que ela pode gerenciar provedores de serviços de nuvem convencionais, bem como soluções internas exclusivas. Além disso, pode ser usado para gerenciar os recursos externos usados para as colaborações com os provedores. Esses recursos incluem infraestrutura de nuvem pública, infraestrutura de nuvem privada, software como serviço, dispositivos de rede e plataformas.
Termos Importantes do Terraform
Veja abaixo alguns termos frequentemente usados no Terraform.
Provedores: Os provedores do Terraform são responsáveis por desenvolver e gerenciar os recursos que estão presentes na infraestrutura. O Terraform é construído na arquitetura plug-in e o binário do provedor pode ser baixado e instalado usando o comando “init”. Os vários exemplos de provedores são AWS, Azure, GCP e Kubernetes, etc.
Recursos: Conhecidos como as pequenas peças de construção que são usadas em uma ou mais infraestruturas, são componentes como uma máquina virtual, uma sub-rede ou o balanceador de carga. Ele deve ser exclusivo porque o servidor de nome e tipo de recurso é uma das identificações do recurso específico.
Módulos: Se você deseja organizar o código de configuração e torná-lo reutilizável, ir para os módulos é a melhor maneira. Eles são usados como recipientes no Terraform e contêm muitos recursos. Você pode encontrar vários módulos no repositório do Terraform ou pode escrever o seu próprio. Um módulo conhecido como módulo Root estará presente em todas as configurações do Terraform.
Variáveis de Entrada: São as variáveis que servem para definir os valores de configuração da infraestrutura. Esses valores podem ser usados com frequência sem chamá-los em todas as instâncias. Eles podem ser facilmente modificados sem recall.
Variáveis de Saída: Uma vez que a infraestrutura está sendo implantada, o uso de variáveis de saída pode ser útil, pois isso pode ajudar na obtenção de informações sobre a implantação e a infraestrutura. Informações como endereços IP podem ser fornecidas ao servidor.
Terraform Remote: Você pode executar o Terraform em um ambiente remoto com acesso compartilhado ao estado para compartilhar a responsabilidade da infraestrutura. O back-end remoto é o nome desse recurso e pode ser usado com frequência no Terraform.
O Terraform pode ser totalmente operado via API, CLI e UI, o que permite que as organizações o integrem facilmente a seus pipelines de CI/CD existentes, interfaces de gerenciamento de serviços de TI e processos do sistema de controle de versão. Esse nível de integração com os fluxos de trabalho existentes minimiza as alterações de processo, agiliza o processo de instalação e execução e garante consistência em todo o processo.
Conheça mais sobre o Terraform no site oficial: www.terraform.io
Se quiser aprender sobre o Terraform na prática, recomendo este treinamento em português:
Infraestrutura Como Código com Terraform, AWS, Azure e Databricks
David Matos