Aula 10 - K8S - Introdução ao Terraform - Automatizando Infraestrutura
O
Terraform é uma ferramenta
open-source desenvolvida pela
HashiCorp que permite aos usuários definir e provisionar a infraestrutura de TI utilizando uma linguagem de configuração declarativa chamada HashiCorp Configuration Language (HCL), ou JSON.
A ferramenta foi projetada para simplificar o processo de gerenciamento de serviços e componentes em diversos provedores de nuvem, bem como em ambientes on-premise.
Comparação com Ferramentas Similares
Embora o
Terraform não seja a única ferramenta de gerenciamento de infraestrutura como código, ele se destaca entre outras opções populares como
Ansible,
Chef, e
Puppet, que também são usadas para automação e gerenciamento de configuração:
- Ansible: Principalmente uma ferramenta de automação de configuração que não requer agentes nos servidores e usa SSH. Ao contrário do Terraform, que é declarativo, o Ansible é mais procedimental e ideal para gerenciamento de configuração.
- Chef e Puppet: Ambos são centrados em agentes e usam uma abordagem procedimental para automação de configuração. Eles exigem um servidor centralizado para gerenciar nós, ao contrário do Terraform que opera sem estado centralizado, baseando-se no estado local ou gerenciado remotamente.
Por que optar pelo Terraform?
Optamos pelo
Terraform por várias razões que o tornam particularmente adequado para cenários de gerenciamento de infraestrutura:
- Abordagem Declarativa vs. Procedimental: O Terraform usa uma abordagem declarativa para infraestrutura como código. Isso significa que o usuário especifica o resultado desejado sem necessidade de detalhar os passos para alcançá-lo, diferentemente de ferramentas procedimentais como Chef e Puppet. Isso simplifica o gerenciamento de grandes infraestruturas e reduz a possibilidade de erros.
- Independência de Provedor: O Terraform oferece suporte extensivo a múltiplos provedores de serviços, incluindo grandes nuvens como AWS, Google Cloud e Azure, além de suportar serviços on-premise. Isso fornece flexibilidade incomparável para gerenciar recursos em diferentes plataformas.
- Gestão Eficiente de Estado: Terraform mantém um estado detalhado da infraestrutura, que pode ser usado para planejar e aplicar mudanças de forma controlada e previsível, garantindo que o que é provisionado corresponde exatamente ao definido nos arquivos de configuração.
Características Principais do Terraform
- Declarativo: Ao contrário de ferramentas imperativas, o Terraform usa uma abordagem declarativa para definir o "estado desejado" da infraestrutura. Isso significa que você descreve o que deseja alcançar, e não os passos exatos para chegar lá. O Terraform determina automaticamente como fazer as mudanças necessárias para alcançar o estado desejado.
- Idempotência: Uma propriedade fundamental do Terraform é a idempotência, o que significa que você pode aplicar o mesmo conjunto de configurações várias vezes e obter o mesmo resultado sem causar erros ou criar configurações duplicadas.
- Gerenciamento de Estado: O Terraform mantém um arquivo de estado que mapeia os recursos reais criados para suas configurações declaradas. Este arquivo de estado permite ao Terraform rastrear a infraestrutura e gerenciar mudanças com eficiência.
- Modularidade: O Terraform permite a criação de módulos que podem ser reutilizados em diferentes partes de sua infraestrutura ou por diferentes projetos, promovendo a reutilização e a manutenção do código.
- Orquestração: Além de provisionar recursos, o Terraform é capaz de orquestrar a configuração de modo que os recursos sejam lançados em uma ordem apropriada, baseada em suas dependências.
Por que o Terraform é usado para gerenciar infraestrutura como código?
- Agilidade e Velocidade: Terraform permite que equipes de TI provisionem rapidamente infraestruturas complexas com apenas alguns comandos. Isso acelera significativamente o processo de deployment, que é essencial em ambientes de desenvolvimento ágil e contínuo.
- Consistência e Confiabilidade: Ao definir a infraestrutura como código, o Terraform assegura que os ambientes sejam provisionados de forma consistente, evitando discrepâncias entre desenvolvimento, teste e produção. Isso reduz os erros operacionais e aumenta a confiabilidade dos sistemas.
- Escala e Adaptabilidade: Com o Terraform, é possível gerenciar uma grande quantidade de recursos e serviços de forma eficiente. A ferramenta foi projetada para escalar e adaptar-se às necessidades crescentes de infraestrutura sem comprometer a performance.
- Transparência e Controle: O uso de código para gerenciar a infraestrutura permite uma melhor visibilidade e controle sobre os recursos, além de facilitar a auditoria e o compliance. As mudanças na infraestrutura podem ser revisadas e aprovadas através de práticas padrão de controle de versão.
- Independência de Plataforma: Terraform suporta múltiplos provedores de serviços de nuvem e tecnologias on-premise, o que permite às empresas evitar o bloqueio com um único fornecedor e adaptar-se a diferentes ambientes de tecnologia.
Instalando e configurando o Terraform
Instalação no Windows
- Download do Terraform: Acesse a página oficial de downloads do Terraform e baixe a versão mais recente do Terraform para Windows. O arquivo será um arquivo zip.
- Extração do Arquivo: Extraia o conteúdo do arquivo zip para uma pasta de sua escolha, como
C:\Terraform.
- Adicionar ao PATH:
- Abra o Painel de Controle e vá para Sistema e Segurança > Sistema > Configurações Avançadas do Sistema.
- Clique em "Variáveis de Ambiente" e edite a variável "Path" em Variáveis do Sistema.
- Adicione o caminho da pasta onde você extraiu o Terraform (por exemplo,
C:\Terraform).
- Confirme todas as janelas com "OK" e reinicie o prompt de comando.
Instalação no Mac e Linux
- Usando Gerenciadores de Pacotes:
- Mac (Homebrew): Abra o terminal e digite
brew install terraform.
- Linux (apt-get): Primeiro, adicione o repositório oficial do HashiCorp com
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - e sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main". Em seguida, atualize e instale com sudo apt-get update && sudo apt-get install terraform.
- Download Direto:
- Acesse a página de downloads e baixe o arquivo apropriado para o seu sistema operacional.
- Extraia o arquivo e mova-o para uma pasta que já esteja no seu PATH ou adicione a nova pasta ao seu PATH.
Esses passos garantem que o
Terraform seja instalado corretamente em seu sistema operacional e esteja pronto para ser usado para provisionar e gerenciar infraestrutura.
Verificar a Instalação
- Abra o Terminal ou Prompt de Comando:
- No Windows, você pode abrir o Prompt de Comando ou o PowerShell.
- No Mac ou Linux, abra o Terminal.
- Execute o Comando de Verificação: Digite
terraform version e pressione Enter. Este comando retorna a versão do Terraform que está instalada no seu sistema.
Se o Terraform estiver corretamente instalado, o sistema exibirá a versão instalada. Se receber uma mensagem de erro indicando que o comando não é reconhecido, você precisará verificar se o caminho do executável do
Terraform foi adicionado corretamente ao PATH do sistema.
Na próxima aula, vamos entrar na parte prática.
Você terá a oportunidade de criar um projeto simples usando Terraform que provisionará recursos reais em uma nuvem, provavelmente usaremos a
Digital Ocean.
Finalizando
E aí, como você aplicaria o
Terraform em seu projeto atual?
Gostaria de saber o que vocês acharam da aula.
Por favor, deixem suas sugestões nos comentários abaixo!
Estou ansioso para ver como vocês aplicarão seus novos conhecimentos de
Terraform para começar a construir infraestruturas de forma eficiente e declarativa.
Obrigado e bons estudos. ;)