curso
O que é o Terraform? Comece a usar a infraestrutura como código
A infraestrutura como código (IaC) é um processo que automatiza o provisionamento e o gerenciamento da infraestrutura por meio de código. Embora a configuração física do hardware e as ferramentas de configuração interativa possam ser usadas para provisionar a infraestrutura, a IaC oferece várias vantagens, como controle de versão, repetibilidade e dimensionamento. Uma das principais ferramentas de IaC disponíveis é o Terraform, uma solução desenvolvida pela HashiCorp em 2014 e usada por mais de 500.000 organizações em todo o mundo. Vamos nos aprofundar em como o Terraform funciona e como usá-lo para operações modernas de TI.
Ao começarmos a aprender sobre o Terraform, saiba que a familiaridade com pelo menos um dos principais provedores de nuvem (AWS, Azure, Google Cloud etc.) é um pré-requisito, pois o Terraform é usado para gerenciar a infraestrutura de nuvem. Nosso curso Understanding Cloud Computing (Entendendo a computação em nuvem ) oferece uma base sólida se você for novo na computação em nuvem.
O que é o Terraform?
O Terraform é uma ferramenta de código aberto que permite que você defina os componentes da infraestrutura e seus relacionamentos usando uma linguagem de configuração de alto nível.
Nos arquivos de configuração legíveis por humanos do Terraform, você pode especificar o estado desejado da sua infraestrutura, e o Terraform automaticamente descobre como chegar a esse estado. Esses arquivos podem ser versionados, compartilhados e reutilizados para fornecer uma maneira consistente de gerenciar sua infraestrutura, desde recursos de computação e armazenamento até recursos de DNS e SaaS.
O Terraform pode ser usado com vários provedores de nuvem, em infraestruturas de várias nuvens e em ambientes locais.
Principais recursos do Terraform
Vamos dar uma olhada mais de perto nos aspectos fundamentais que diferenciam o Terraform:
HashiCorp Configuration Language
O Terraform usa uma linguagem de alto nível chamada HCL (HashiCorp's Configuration Language), projetada especificamente para definir a infraestrutura como código. As linguagens de configuração de alto nível implementam uma sintaxe declarativa que é abstrata e fácil de usar em comparação com scripts de baixo nível e configuração manual. Você pode ter encontrado linguagens de alto nível antes, em arquivos YAML ou JSON.
A HCL segue uma estrutura de blocos, em que cada bloco aninhado representa recursos e suas configurações. Os recursos são definidos explicitamente com nomes e atributos.
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Plano de execução
Depois que você definir o estado desejado da sua infraestrutura, o Terraform gerará um plano de execução. Esse plano listará as etapas que o Terraform precisa realizar para atingir esse estado, para que você possa revisar as alterações antes que elas sejam aplicadas. Verificar o plano antes de você aplicar as alterações evitará modificações indesejadas, como a exclusão de recursos.
Gerenciamento do estado
O Terraform mantém um arquivo de estado que programa automaticamente o estado atual da sua infraestrutura e serve como fonte de verdade ao determinar quais mudanças precisam ser feitas. Por padrão, ele é armazenado localmente e chamado terraform.tfstate.
Provedores
Os provedores são plug-ins que interagem com APIs de plataformas de nuvem e outros serviços e permitem que o Terraform gerencie uma ampla variedade de recursos. Os provedores oficiais são desenvolvidos e mantidos pela HashiCorp e seus parceiros confiáveis, como AWS, Azure, Google Cloud, Github, Datadog, etc. Há também plug-ins desenvolvidos pela comunidade, que podem ser encontrados no Terraform Registry ou no Github.
Gráfico de recursos
O Terraform cria um gráfico de recursos que mostra os recursos da sua infraestrutura e as relações entre eles. Esse gráfico permite que o Terraform gere planos de forma eficaz, manipule dependências entre recursos e garanta que os recursos sejam criados, atualizados e excluídos na ordem correta. Esse gráfico também é uma ótima maneira de visualizar sua infraestrutura e entender o impacto das alterações que você pretende fazer.
Exemplo de gráfico de recursos. Fonte: Documentação da HashiCorp
Primeiros passos com o Terraform
Vamos examinar nosso primeiro fluxo de trabalho do Terraform. Se você é novo no DevOps ou na computação em nuvem em geral, recomendo que faça nossos cursos Understanding Cloud Computing e Introduction to DevOps antes de prosseguir.
Instalação e configuração
Neste tutorial do Terraform, criaremos recursos no AWS. Se você quiser acompanhar e não tiver uma conta, acesse a AWS e inscreva-se.
- Faça o download do Terraform no site oficial. Escolha o binário correto para seu sistema operacional e siga as instruções de instalação.
- Depois que você tiver instalado o Terraform, abra uma nova janela do Terminal e execute terraform -version para verificar se o software está instalado corretamente.
- Instalar a CLI do AWS
- Configure a CLI do AWS executando aws configure em seu terminal. Você será solicitado a inserir o ID da chave de acesso, a chave de acesso secreta, o nome da região padrão e o formato de saída padrão. O Terraform deve ser capaz de acessá-los automaticamente.
Primeira configuração do Terraform
Crie um novo diretório e seu primeiro arquivo de configuração. Vamos chamá-lo de main.tf e informar ao Terraform que queremos criar uma instância do AWS EC2. O código, escrito em HCL, tem a seguinte aparência:
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Inicialização do projeto
Agora, vamos inicializar nosso projeto Terraform executando o seguinte comando:
$ terraform init
Esse é um comando único e fará o download dos plug-ins de provedor necessários. Você não precisará executá-lo para as alterações subsequentes.
Planejar
Agora, queremos gerar nosso plano de execução. Lembre-se de que o plano destacará as alterações que o Terraform precisará fazer para atingir o estado desejado (neste caso, uma instância do EC2 em execução). Você pode correr:
$ terraform plan
Você deverá ver algo parecido com isto:
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Aplicar
Revisamos o plano e agora decidimos executá-lo e provisionar os recursos. Em seu terminal, execute:
$ terraform apply
Você será solicitado a confirmar a ação. Digite "yes" para continuar.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Você deverá ver o seguinte:
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed] aws_instance.example:
Creation complete after 15s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Parabéns, você provisionou sua primeira instância do EC2 no AWS usando o Terraform!
Benefícios do uso do Terraform
Mencionamos anteriormente que o uso do Terraform oferece muitos benefícios, como consistência e repetibilidade, e uma taxa reduzida de erros humanos graças aos planos de execução.
Outros benefícios incluem:
- Provisionamento rápido: O Terraform pode criar e atualizar recursos em paralelo, o que é particularmente útil para criar rapidamente ambientes de desenvolvimento, teste e preparação.
- Aumento da colaboração: Em conjunto com um sistema de controle de versão como o Git, o Terraform é uma ótima maneira de aumentar a colaboração e a transparência da sua infraestrutura. As alterações podem ser revisadas, aprovadas e programadas da mesma forma que o código do aplicativo.
- Recuperação eficiente de desastres: Se algo der errado, o Terraform pode recriar rapidamente toda a infraestrutura do zero usando os mesmos arquivos de configuração.
- Suporte à comunidade: O Terraform incentiva o uso de módulos, que são configurações reutilizáveis que podem ser compartilhadas e promovem práticas recomendadas quando se trata de gerenciar a infraestrutura. O Terraform também possui uma comunidade ativa e um extenso ecossistema de provedores e módulos, o que significa que você provavelmente encontrará algo para a sua pilha de tecnologia, independentemente do seu nicho.
Casos de uso comuns do Terraform
Se você é um engenheiro de dados que está criando pipelines ou um cientista de dados que deseja implantar suas soluções na produção, o Terraform é uma ótima ferramenta para gerenciar suas necessidades de infraestrutura. Aqui estão alguns dos casos de uso mais comuns:
Gerenciamento de várias nuvens
Nem sempre é fácil gerenciar a infraestrutura que abrange vários provedores de nuvem. O Terraform permite que você faça exatamente isso com uma única ferramenta. Além disso, o Terraform pode gerenciar recursos no local, o que o torna uma solução ideal para organizações que operam em um ambiente híbrido.
Fluxos de trabalho de CI/CD
O Terraform se integra bem aos fluxos de trabalho de CI/CD, o que significa que você pode implantar sua infraestrutura como parte do processo de entrega de software. Você também pode criar e destruir automaticamente ambientes de visualização, desenvolvimento, teste ou preparação, quando necessário.
Clusters de Kubernetes
O Terraform pode gerenciar clusters do Kubernetes em diferentes provedores de nuvem, como AWS (EKS), Azure (AKS) ou GCP (GKE). Isso inclui a configuração da infraestrutura necessária, o gerenciamento dos recursos do Kubernetes dentro do cluster e o dimensionamento dos clusters com base nas demandas de carga de trabalho.
Terraform vs. Outras ferramentas de IaC
Outras ferramentas populares de IaC incluem Ansible, Chef, Puppet e AWS CloudFormation. Cada ferramenta tem seus pontos fortes e fracos. Dê uma olhada:
Recurso | Terraform | Ansible | Chefe de cozinha | Marionete | CloudFormation |
---|---|---|---|---|---|
Código aberto | Sim | Sim | Sim | Sim | Não |
Sintaxe declarativa | Sim | Não | Não | Sim | Sim |
Suporte a várias nuvens | Sim | Sim | Sim | Sim | Não, somente AWS |
Gerenciamento do estado | Sim | Não | Não | Sim | Sim |
Planos de execução | Sim | Não | Não | Não | Não |
Gerenciamento de dependências | Sim | Limitada | Limitada | Sim | Sim |
Como podemos ver, embora todas essas ferramentas sejam poderosas por si só, o Terraform se destaca por seu conjunto abrangente de recursos. No entanto, essa lista não é exaustiva, e cada ferramenta atende a casos de uso ligeiramente diferentes, dependendo dos requisitos. Por exemplo, o Ansible e sua natureza processual são adequados para o gerenciamento de configurações e tarefas ad-hoc.
Conclusão
Nos últimos 10 anos, o Terraform ajudou milhares de organizações a gerenciar sua infraestrutura de TI. Com sua abordagem declarativa, recursos de automação e suporte para ambientes com várias nuvens, o Terraform se tornou uma das ferramentas de IaC mais populares e, sem dúvida, continuará sendo um dos principais participantes no espaço de gerenciamento de infraestrutura, à medida que a adoção da nuvem continua a crescer.
Agora que você entende os conceitos básicos do Terraform, pode se aprofundar em configurações mais avançadas e cenários da vida real. Dê uma olhada nos tutoriais do Terraform da HashiCorp para saber como usar o Terraform em tarefas e casos de uso comuns, ou confira nossa postagem no blog 14 Essential Data Engineering Tools to Use in 2024 para entender como o Terraform se encaixa no kit de ferramentas do engenheiro de dados.
Perguntas frequentes
O Terraform é adequado para projetos de pequena escala ou é principalmente para uso corporativo?
O Terraform é uma ferramenta útil, independentemente do tamanho do seu projeto! Não importa se você tem 5 recursos para gerenciar ou 1.000, com certeza verá os benefícios.
Quanto custa o Terraform?
O Terraform é de código aberto e de uso gratuito, mas lembre-se de que seu(s) provedor(es) de nuvem cobrará(ão) de você pelos recursos provisionados e gerenciados por meio do Terraform.
O Terraform pode gerenciar bancos de dados e outros serviços com estado?
Sim, o Terraform pode gerenciar bancos de dados e outros serviços com estado. Você pode definir instâncias, clusters e configurações em seus arquivos IaC.
Como o Terraform lida com segredos e informações confidenciais nos arquivos de configuração?
O Terraform incentiva as práticas recomendadas para lidar com segredos, oferecendo suporte a variáveis de ambiente, variáveis criptografadas e integrações com serviços de gerenciamento de segredos, como o HashiCorp Vault ou o AWS Secrets Manager.
Aprenda com a DataCamp
curso
Introdução à engenharia de dados
curso