TERRAFORM SERIES: TEORIA … Clouds + Datacenters + IaC = HashiCorp
Satisfeito com o panorama geral, no que diz respeito ao progresso do BLOG, decidi que é hora de avançar um pouco e começar mais uma série. Caso esteja curioso, ou não saiba ainda, este é o nosso cenário atual: 2 finalizadas (OTRS e AWS) + 2 em andamento (ANSIBLE e ZABBIX) + 1 nova (TERRAFORM) = 5 ferramentas no total, e enquanto escrevo o presente artigo. Circunstâncias que me levaram a essa tomada de hoje foram basicamente duas, a necessidade (mãe de todas as invenções) e a infraestrutura contemporânea da TI (dezenas, centenas, milhares de máquinas para gerenciar, nos mais diversos formatos – bare/vm/container/pod/ – em diferentes meios – local/remoto/híbrido) … Sendo que a última é o que muitos chamam e ficou conhecida como IaC (abreviação do inglês para Infrastructure as Code) Ou em bom português, infraestrutura como código, ou na minha tradução livre, infraestrutura enquanto código. Não importando muito, é claro, apenas escolha uma e seja feliz!
TERRAFORMAR? O QUE É?
1 – Verbo transitivo direto … Em qualquer dicionário. 2 – Modificar, hipoteticamente, a atmosfera e a temperatura de um corpo celeste (planeta ou satélite) de forma a que ele adquira as condições apropriadas para suportar um ecossistema com seres vivos terrestres … De acordo com a Wikipédia. 3 – Engenharia Planetária, Geoengenharia, ou Terraformação … Segundo o próprio, e renomado astrônomo, Carl Sagan, em um artigo publicado pela Science em 1961 https://www.science.org/doi/10.1126/science.133.3456.849 Reiterado novamente mais tarde, no ano de 1973, em outro artigo do mesmo autor https://www.sciencedirect.com/science/article/abs/pii/0019103573900262?via%3Dihub
TERRAFORM? HASHICORP? QUEM SÃO?
Quem veio primeiro? O ovo ou a galinha? Bem, neste caso específico a resposta correta seria, a HashiCorp (galinha) e depois o Terraform (ovo). Ou talvez, criador e criatura. Ou simplesmente, empresa e produto. Sim, sim, concordo! Essa última faz mais sentido para nós dado o contexto 😉
A história de ambos remonta o ano de 2008, quando dois estudantes da Universidade de Washington (Seattle) se conheceram. Graças a um projeto de pesquisa em comum durante a graduação, Mitchell Hashimoto e Armon Dagdar, começaram a trabalhar com a recém-lançada AWS. Devido a geografia da cidade, cercada por grandes companhias de tecnologia, e também a boa relação entre alunos da faculdade e funcionários dessas empresas, proporcionados muitas vezes pela atividade acadêmica em si, eles tiveram acesso às primeiras versões da Google Cloud e Microsoft Azure. Com isso, ambos se formaram e Mitchell mudou-se para Califórnia, na cidade de São Francisco, quando fundou a HashiCorp em 2012. Alguns meses depois, ele convida e Armon entra para a equipe, assumindo o cargo de CTO, mais precisamente em julho de 2013. Desde então a empresa vem ampliando seu portifólio, lançando diversas soluções, alternando frequentemente a sua natureza, ora abertas e gratuitas, ora fechadas e proprietárias. Teoricamente, cada ferramenta possui um nome, e na prática simbolizam individualmente um estágio dentro do ciclo de vida de um software na nuvem.
O Terraform apresenta uma definição oficial, externada pela própria HashiCorp:
O HashiCorp Terraform é uma ferramenta de infraestrutura como código que permite definir recursos na nuvem e no local em arquivos de configuração legíveis por humanos que você pode versionar, reutilizar e compartilhar. Você pode então usar um fluxo de trabalho consistente para provisionar e gerenciar toda a sua infraestrutura ao longo de seu ciclo de vida. O Terraform pode gerenciar componentes de baixo nível, como recursos de computação, armazenamento e rede, bem como componentes de alto nível, como entradas DNS e recursos SaaS.
https://www.terraform.io/intro
Ou seja, por exemplo, você pode ter diferentes nuvens rodando em seu parque computacional e ainda sim ser capaz de controlar todas em único fluxo de trabalho. Dessa forma, a sua infraestrutura resultante seria constituída por “pilhas” tanto locais (vSphere, OpenStack, CloudStack) quanto remotas (AWS, Azure, Google Cloud), no sentido e ponto de vista da hospedagem. Como desdobramento direto, as configurações de servidores e aplicações nunca mais seriam perdidas, ou desviadas do estado desejado por seus respectivos administradores/desenvolvedores. Isso mesmo, a famosa IaC (infraascode) mencionada mais cedo, na introdução desse POST. Cujo detalhamento e vantagens explicarei logo a seguir, na próxima seção.
IaC: PONTOS-CHAVE
Figurinha carimbada em vários manifestos, como Agile e DevOps, a Infraestrutura como Código é considerada uma prática que visa sempre otimizar o processo de entrega de ambientes computacionais. Na literatura, muitos autores acabam trocando processo de entrega por simplesmente provisionamento, sendo este um conceito chave e bastante recorrente na automação. Em suma, o que a IaC busca é tornar esse processo o mais rápido, automatizado, e replicável possível. Isso vale tanto para grandes ambientes, como normalmente são os de PRODUÇÃO, quanto para testes, como DESENVOLVIMENTO/HOMOLOG. Proporcionando assim, três pilares para a nova infraestrutura do século XXI: controle de versão, integração contínua, e implementação contínua.
No quesito vantagens, são inúmeras observadas e vão desde:
- Documentação da infraestrutura
- Garantia da integridade e estado desejado (Infraestrutura Imutável)
Passando por:
- Automatização de builds da infra no Pipeline
- Garantia do mesmo resultado todas as vezes que rodar o script – o resultado será sempre o mesmo (idempotência)
Chegando até mesmo:
- Redução de erros humanos
- Sem retrabalho: você faz apenas uma vez
- Aliado com outras ferramentas: Ansible, Chef ou Puppet, etc.
IF (CLOUD=AWS) THEN: CLOUDFORMATION+BEANSTALK == NOPE! (WRONG/ERRADO)
Ah Victor, mas a AWS já possui soluções nativas para lidar com a infraestrutura na nuvem … Por que devo aprender outra fora da caixinha? E por que o Terraform? Deveras uma excelente pergunta meu caro rapaz 🧐 Bom, primeiramente porque se trata de um software livre, ou seja open source, aberto a comunidade. Plugins, extensões, scripts, todos compartilhados e disponíveis a qualquer hora, em qualquer lugar. Segundo, porque na prática se comporta como uma plataforma independente, ou seja, multicloud. Tem suporte garantido para a maioria dos provedores de cloud (CSP) da atualidade: Google, Azure, Digital Ocean, AWS. E por último, porque todos esses citados, que possuem uma ferramenta nativa e própria, são considerados serviços pagos. Eu sei, eu sei. E calma, não é uma crítica direcionada. Digo, quando se é uma empresa com capital, orçamento previsto, e mesa diretora simpatizante a vê-los como investimento e não mero gasto, tudo bem, concordo! Aí não vejo problema nenhum. TODAVIA, PORÉM, ENTRETANTO, quando se é um estudante, ou profissional autônomo, ou pequena companhia iniciante no ramo 😓 Bem meus amigos, a história é completamente outra.
>_ REFERÊNCIAS:
https://www.terraform.io/intro
https://www.hashicorp.com/about/origin-story
https://www.hashicorp.com/resources/what-is-the-hashicorp-origin-story
https://www.ibm.com/br-pt/cloud/learn/terraform
https://www.gocache.com.br/dicas/o-que-e-terraform-e-quais-suas-aplicacoes/
[…] https://automatesmachines.org/2022/03/03/terraform-series-teoria-clouds-datacenters-iac-hashicorp/ […]