O que é Terraform e qual a sua importância?

O que é o Terraform?

O Terraform é uma ferramenta de código aberto de “infraestrutura como código”, criada pela HashiCorp.
Uma ferramenta de codificação declarativa, o Terraform permite que os desenvolvedores usem uma linguagem de configuração de alto nível chamada HCL (HashiCorp Configuration Language) para descrever o “estado final” desejado da infraestrutura em nuvem ou local para executar um aplicativo. Em seguida, ele gera um plano para atingir esse estado final e executa o plano para provisionar a infraestrutura.


Como o Terraform usa uma sintaxe simples, pode provisionar a infraestrutura em vários data centers na nuvem e no local e pode reprovisionar a infraestrutura de forma segura e eficiente em resposta a alterações de configuração, ele é atualmente uma das ferramentas de automação de infraestrutura mais populares disponíveis. Se a sua organização planeja implantar um ambiente de nuvem híbrida ou multinuvem, provavelmente desejará ou precisará conhecer o Terraform.

Por que a infraestrutura como código (IaC)?

Para entender melhor as vantagens do Terraform, é útil entender primeiro os benefícios da Infraestrutura como Código (IaC). A IaC permite que os desenvolvedores codifiquem a infraestrutura de forma a tornar o provisionamento automatizado, mais rápido e repetível. É um componente essencial das práticas ágeis e de DevOps, como controle de versão, integração contínua e implementação contínua.

A infraestrutura como código pode ajudar com o seguinte:

  • Aumentar a velocidade: A automação é mais rápida do que navegar manualmente em uma interface quando você precisa implantar e/ou conectar recursos.
  • Melhorar a confiabilidade: Se sua infraestrutura for grande, é fácil configurar um recurso de forma incorreta ou provisionar serviços na ordem errada. Com a IaC, os recursos são sempre provisionados e configurados exatamente como declarados.
  • Evite o desvio de configuração: O desvio de configuração ocorre quando a configuração que provisionou seu ambiente não corresponde mais ao ambiente real. (Consulte “Infraestrutura imutável” abaixo).
  • Apoiar experimentos, testes e otimização: Como a Infraestrutura como Código torna o provisionamento de uma nova infraestrutura muito mais rápido e fácil, você pode fazer e testar alterações experimentais sem investir muito tempo e recursos e, se gostar dos resultados, poderá ampliar rapidamente a nova infraestrutura para produção.

Por que a Terraform?

Existem alguns motivos principais pelos quais os desenvolvedores optam por usar o Terraform em vez de outras ferramentas de Infraestrutura como Código:

Código aberto: O Terraform é apoiado por grandes comunidades de colaboradores que criam plug-ins para a plataforma. Independentemente do provedor de nuvem que você usa, é fácil encontrar plugins, extensões e suporte profissional. Isso também significa que o Terraform evolui rapidamente, com novos benefícios e melhorias adicionados de forma consistente.

Agnóstico em relação à plataforma: O que significa que você pode usá-lo com qualquer provedor de serviços em nuvem. A maioria das outras ferramentas de IaC é projetada para funcionar com um único provedor de nuvem. 

Infraestrutura imutável: A maioria das ferramentas de infraestrutura como código cria uma infraestrutura mutável, o que significa que a infraestrutura pode mudar para acomodar alterações, como uma atualização de middleware ou um novo servidor de armazenamento.

O perigo da infraestrutura mutável é o desvio da configuração – à medida que as alterações se acumulam, o provisionamento real de diferentes servidores ou outros elementos da infraestrutura se distancia ainda mais da configuração original, dificultando o diagnóstico e a correção de bugs ou problemas de desempenho.

 O Terraform provisiona uma infraestrutura imutável, o que significa que, a cada alteração no ambiente, a configuração atual é substituída por uma nova que leva em conta a alteração, e a infraestrutura é reprovisionada. Melhor ainda, as configurações anteriores podem ser mantidas como versões para permitir reversões, se necessário ou desejado.

Módulos do Terraform

Os módulos do Terraform são configurações pequenas e reutilizáveis do Terraform para vários recursos de infraestrutura que são usados em conjunto. Os módulos do Terraform são úteis porque permitem que recursos complexos sejam automatizados com construções reutilizáveis e configuráveis. Escrever até mesmo um arquivo Terraform muito simples resulta em um módulo. Um módulo pode chamar outros módulos – chamados de módulos filhos – o que pode tornar a montagem da configuração mais rápida e concisa. Os módulos também podem ser chamados várias vezes, seja na mesma configuração ou em configurações separadas.

Provedores do Terraform

Os provedores do Terraform são plug-ins que implementam tipos de recursos. Os provedores contêm todo o código necessário para autenticar e conectar-se a um serviço – normalmente de um provedor de nuvem pública – em nome do usuário. Você pode encontrar provedores para as plataformas e serviços de nuvem que usa, adicioná-los à sua configuração e usar os recursos deles para provisionar a infraestrutura. Os provedores estão disponíveis para quase todos os principais provedores de nuvem, ofertas de SaaS e outros, desenvolvidos e/ou suportados pela comunidade Terraform ou por organizações individuais.

Terraform vs. Kubernetes

Às vezes, há confusão entre o Terraform e o Kubernetes e o que eles realmente fazem. A verdade é que eles não são alternativas e, na verdade, trabalham juntos de forma eficaz.

O Kubernetes é um sistema de orquestração de contêineres de código aberto que permite que os desenvolvedores programem implantações em nós de um cluster de computação e gerenciem ativamente as cargas de trabalho em contêineres para garantir que seu estado corresponda às intenções dos usuários.

O Terraform, por outro lado, é uma ferramenta de Infraestrutura como Código com um alcance muito mais amplo, permitindo que os desenvolvedores automatizem a infraestrutura completa que abrange várias nuvens públicas e privadas.

O Terraform pode automatizar e gerenciar recursos de nível de infraestrutura como serviço (IaaS), plataforma como serviço (PaaS) ou até mesmo software como serviço (SaaS) e criar todos esses recursos em todos esses provedores em paralelo. Você pode usar o Terraform para automatizar o provisionamento do Kubernetes – especialmente clusters gerenciados do Kubernetes em plataformas de nuvem – e para automatizar a implantação de aplicativos em um cluster.

Fonte:

Douglas Bernardini

Cybersecurity Specialist & Cloud Computing Expert with +10 years experience in IT infrastructure.

Specialist delivering assets for development teams in Google Cloud Platform (GCP) and Amazon web services (AWS)

Hands-on cloud security enterprise architect, with experience in SIEM/SOC, IAM, cryptography, pentest, network topologies, operating systems, databases, and applications.

Experience in DevSecOps analysis to discover vulnerabilities in software, identifying CI/CD risks gaps and recommending secure-coding process (S-SDLC).

PDF's