O Terraform, uma ferramenta de código aberto de "infraestrutura como código" criada pela HashiCorp, permite que os programadores criem, alterem e versionem a infraestrutura com segurança e eficiência.
O Terraform é uma ferramenta de codificação declarativa que permite que os desenvolvedores usem uma linguagem de configuração de alto nível chamada HashiCorp Configuration Language (HCL) para descrever a nuvem de "estado final" desejado ou nenhuma infraestrutura local para executar uma aplicação. Em seguida, gera um plano para alcançar esse estado final e o executa para prover a infraestrutura.
O Terraform utiliza uma sintaxe simples, provisiona infraestrutura em vários serviços em nuvem e data centers locais e reprovisiona a infraestrutura de forma segura e eficiente em resposta a mudanças na configuração. Por isso, atualmente, é uma das ferramentas de automação de infraestrutura mais populares disponíveis. Se a sua organização pretende implementar uma nuvem híbrida ou um ambiente multinuvem, vocês provavelmente vão querer conhecer o Terraform.
Saiba como o desktop como serviço (DaaS) permite as empresas atingirem o mesmo nível de performance e segurança ao implementar aplicações no local.
Registre-se para receber o guia sobre modernização de aplicativos
A infraestrutura como código ajuda a:
Para entender melhor as vantagens do Terraform, é importante entender primeiro os benefícios da infraestrutura como código (IaC). A IaC permite que os desenvolvedores codifiquem a infraestrutura para tornar o provisionamento automatizado, mais rápido e repetível. É um componente essencial das práticas ágeis e DevOps, como controle de versão, integração contínua e implementação contínua.
A automação é mais rápida do que navegar manualmente em uma interface quando é necessário implementar ou conectar recursos.
Se sua infraestrutura for grande, fica mais fácil configurar incorretamente um recurso ou prover serviços na ordem errada. Com a IaC, os recursos são sempre providos e configurados exatamente como declarados.
O desvio de configuração ocorre quando a configuração que proveu o ambiente não corresponde mais ao ambiente real. (Consulte "infraestrutura imutável")
Como a infraestrutura como código facilita e agiliza mais a provisão de novas infraestruturas, você pode fazer e testar alterações experimentais sem investir tanto tempo e recursos. Se gostar dos resultados, você pode expandir rapidamente a nova infraestrutura para produção.
Veja alguns dos principais motivos que fazem os desenvolvedores escolherem o Terraform em vez de outras ferramentas de infraestrutura como código:
O Terraform conta com a contribuição de grandes comunidades de colaboradores que criam plug-ins para a plataforma. Independentemente do provedor de nuvem utilizado, é fácil encontrar plug-ins, extensões e suporte profissional. Isso também significa que o Terraform evolui rapidamente, com a inclusão sistemática de novos benefícios e melhorias.
Isso significa que você pode usá-lo com qualquer provedor de serviços de nuvem. A maior parte das outras ferramentas de IaC é projetada para funcionar com um único provedor de nuvem.
A maioria das ferramentas de infraestrutura como código cria uma infraestrutura mutável, ou seja, a infraestrutura pode mudar para acomodar alterações, como um upgrade de middleware ou um novo servidor de armazenamento.
O perigo de uma infraestrutura mutável é o desvio de configuração. Isso significa que, conforme as alterações se acumulam, a provisão real de diferentes servidores ou outros elementos de infraestrutura "se desvia" da configuração original, dificultando a identificação e a correção de bugs ou problemas de desempenho.
O Terraform provê uma infraestrutura imutável, o que significa que, com cada alteração no ambiente, a configuração atual é substituída por uma nova que responde pela alteração, e a infraestrutura é reprovisionada. E melhor ainda: se necessário, as configurações anteriores podem ser mantidas como versões para habilitar as reversões.
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. Esse módulos são úteis porque permitem que recursos complexos sejam automatizados com estruturas reutilizáveis e configuráveis.
A escrita de um arquivo do Terraform, mesmo que seja bem simples, resulta em um módulo. Um módulo pode solicitar outros módulos (chamados de módulos secundários), o que pode tornar a montagem da configuração mais rápida e concisa. Os módulos também podem ser solicitados várias vezes, seja na mesma configuração ou em configurações separadas.
Os provedores do Terraform são plug-ins que implementam tipos de recursos. Eles contêm todo o código necessário para autenticação e conexão a um serviço, normalmente de um provedor de nuvem pública, em nome do usuário.
É possível encontrar provedores para as plataformas de nuvem e serviços que você usa, adicioná-los à sua configuração e depois usar os recursos deles para prover a infraestrutura. Os provedores estão disponíveis para quase todos os principais provedores de nuvem, ofertas de SaaS e mais, desenvolvidos e/ou respaldados pela comunidade do Terraform ou organizações individuais.
Consulte a documentação do Terraform (link fora de ibm.com) para ver uma lista detalhada.
Às vezes, existe uma confusão sobre Terraform e Kubernetes e o que eles fazem. A verdade é que eles não são concorrentes e funcionam em conjunto de forma eficaz.
O Kubernetes é um sistema de orquestração de contêineres de código aberto. Ele permite aos desenvolvedores agendar implementações em nós em um cluster de computação e gerenciar ativamente cargas de trabalho conteinerizadas, para garantir que seu estado corresponda às intenções dos usuários.
O Terraform é uma ferramenta de infraestrutura como código com um alcance mais amplo, que permite aos desenvolvedores automatizar uma infraestrutura completa que abrange várias nuvens públicas e privadas.
O Terraform pode automatizar e gerenciar os recursos de nível de infraestrutura como serviço (IaaS), plataforma como serviço (PaaS) ou mesmo software como serviço (SaaS) e desenvolver todos esses recursos em todos esses provedores paralelamente. É possível usar o Terraform para automatizar a provisão do Kubernetes (particularmente clusters do Kubernetes gerenciados) em plataformas de nuvem e automatizar a implementação de aplicações em um cluster.
Tanto o Terraform quanto o Ansible são ferramentas de infraestrutura como código, mas há algumas diferenças significativas entre os dois:
O IBM Cloud Schematics fornece automação ao oferecer modelos declarativos do Terraform para uma infraestrutura de nuvem desejada.
A infraestrutura como código (IaC) automatiza a provisão da infraestrutura, permitindo que sua organização desenvolva, implemente e expanda aplicações em nuvem com maior velocidade, menos riscos e custos reduzidos.
O Kubernetes é uma plataforma de orquestração de contêineres de código aberto que automatiza a implantação, o gerenciamento e o dimensionamento de aplicações. Saiba como o Kubernetes permite um desenvolvimento econômico nativo da nuvem.
Uma introdução ao IaaS, seus componentes, vantagens, preços e como ele se relaciona a PaaS, SaaS, BMaaS, contêineres e serverless.