Conhecendo o Terraform
Nesse artigo vamos conhecer o Terraform, bem como suas aplicações e porque ele vem ganhando cada vez mais mercado, fãs no universo de DevOps. Podemos criar ambientes totalmente personalizáveis, com muitos recursos e com pouquíssimas linhas de código e ainda replicáveis com apenas um comando.
Afinal o que é Terraform?
O Terraform é uma ferramenta bastante simples, porém muito poderosa que nos possibilita gerenciar toda a infraestrutura utilizando código em arquivos simples, concisos e declarativos.
O Terraform é de código aberto (Open Source) e é desenvolvido pela HashiCorp, que também possui outras ferramentas, que vocês já devem conhecer, a mais famosa é o Vagrant, com a qual podemos provisionar ambientes isolados da nossa máquina física para que possamos utilizá-los como ambiente de desenvolvimento e ser o mais semelhante possível de um servidor de produção, porém isso é assunto para um outro artigo.
Algumas funcionalidades do Terraform
Assim, essa ferramenta nos permite criar, e ou alterar versões de infraestrutura de nossos ambientes, e de maneira eficiente e segura. O Terraform utiliza arquivos de configurações, em que podemos informar todos os recursos e componentes que nossa infraestrutura precisa, e ainda podemos indicar uma ordem para a utilização dos recursos, onde podemos definir que um serviço precisa que outro seja iniciado e ou criado primeiro.
Com ele podemos criar uma só máquina nos serviços em nuvem como instâncias EC2 (Elastic Compute Cloud) na AWS (Amazon Web Services) ao qual a ferramenta tem suporte, ou também podemos criar várias máquinas e assim criar um Data Center inteiro, e ainda configurar tudo com poucas linhas de código e pouquíssimos arquivos.
Outra importante funcionalidade que a ferramenta possui é o plano de execução, sempre podemos verificar o sequência de execução de um infraestrutura, assim vemos os passos que o Terraform irá executar para atingir o estado descrito no(s) arquivo(s) de configuração.
Esses planos também são adaptáveis, assim no momento em que mudamos o(s) arquivo(s) de configuração o Terraform disponibiliza um novo plano com as mudanças necessárias para que possamos analisar as mudanças que serão realizadas no ambiente.
Até aqui, vimos que o Terraform têm muitos recursos interessantes e que podem nos auxiliar de uma forma muito positiva, mas onde realmente podemos utilizar?
Suas aplicações
Primeiro o que podemos pensar é que se é o Terraform nos permite criar ambientes, seria interessante utilizá-lo em serviços em nuvem, como AWS, Google Cloud Platform, Azure, você pode verificar a lista com todos os provedores aqui.
E o que todos esses serviços têm em comum? Bem, eles nos permitem criar máquinas (hosts) para colocarmos nossas aplicações em produção, e essa é a utilização mais comum do Terraform, porém, é só isso que podemos fazer com o Terraform?
Não, essa ferramenta também trabalha com os níveis mais baixos da nossa infraestrutura, ela também nos permite manipulação de recursos como armazenamento, rede, instâncias (hosts) como já falei anteriormente, e os recursos de mais alto nível como é o caso de DNS, recursos de Software como serviço (SaaS, é o caso do Heroku e outros).
Vantagens do Terraform
Temos muitas vantagens trabalhando com o Terraform, pense que numa equipe grande, geralmente precisamos de um ambiente para testes ou para homologação, ou para avaliar a qualidade das nossas aplicações.
Assim, seria muito desperdício utilizar serviços em nuvem, como instâncias (hosts, máquinas) que tem um custo considerável e deixarmos as mesmas a maior parte do tempo ociosas, sem utilização, já que essas etapas (testes, homologação, avaliação) não são tão constantes, e o Terraform pode nos ajudar com isso.
Podemos criar um ambiente para testes em questão de minutos, já configurado e pronto para uso, e logo após terminarmos todos os testes e verificações, podemos simplesmente excluir esse ambiente, e quando precisarmos novamente é só executar um comando e já vamos ter novamente o ambiente pronto, isso é o que chamamos de ambiente descartável.
Conclusão
Vimos que o Terraform é uma ferramenta muito poderosa para área de DevOps, tem uma amplitude de uso muito grande e nos proporciona ambiente versáteis, personalizáveis e acima de tudo compartilháveis e reutilizáveis.
Assim, é muito importante conhecer uma ferramenta tão rica quanto essa, mesmo que você seja um desenvolvedor e que seu foco não seja essa área. A ferramenta também tem uma curva de aprendizado pequena facilitando a rápida utilização da mesma nas empresas, e tem uma documentação bastante completa.
Gostou do artigo e quer saber mais sobre Terraform, aqui na alura temos o curso de Terraform que vai te ensinar desde como provisionar a primeira infraestrutura até trabalhar com Terraform Cloud.