#198 Otimizando operações com Terraform e infraestrutura como código
Transcrição
00:00:00:00 – 00:00:29:20
Fernandinha
Está começando mais um entre chaves, o seu podcast de desenvolvimento de software. E hoje a gente vai falar sobre infraestrutura como código, que é um negócio que realmente mudou, revolucionou a forma como a gente implanta e opera sistemas, softwares e tudo mais. Mas especificamente, a gente vai falar sobre uma ferramenta muito popular que é o Terraform.
00:00:29:22 – 00:00:55:15
Fernandinha
Mas antes, Ângelo está aqui comigo, meu companheiro de bancada. E aí, Ângelo, como você está?
Ângelo
Olá, Fernandinha! Uma honra participar aqui como host novamente e vamos conversar hoje sobre Terraform. Vamos fazer essa galera automatizar essa infraestrutura para a gente parar de sofrer com os ambientes.
Fernandinha
Exatamente, e pra falar então sobre esse assunto a gente está aqui com o Dudu, que ele arquiteto de software aqui na dti e bastante conhecedor de Terraform e também com o Luiz, que é DevOps aqui na dti.
00:00:55:17 – 00:01:21:05
Fernandinha
Então gente, pra começar esse papo, eu queria que a gente introduzisse um pouco o conceito rapidamente aqui sobre o que é infraestrutura como código e aí a gente entra um pouco mais nas particularidades e especificidades do Terraform. Então, Dudu, o que é infraestrutura como código?
Dudu
Infraestrutura como código é tipo assim, ao invés de você chegar lá no portal da Asure, lá no site lá portal.asure.com e você sai clicando em Create e criando a sua infraestrutura.
00:01:21:05 – 00:01:46:22
Dudu
Você escreve um código e esse código vai ser executado gerando uma pipelina, alguma coisa e a execução desse código é que vai criar a sua infraestrutura lá, no caso, no exemplo que eu dei, na Asure, mas tipo assim pode ser em qualquer lugar, não só criar, mas tipo assim, manter e atualizar o estado da sua infraestrutura.
Ângelo
Boa, acho legal também comentar assim as vantagens e porque é que a gente precisa automatizar? O que você acha, Luiz?
00:01:47:00 – 00:02:17:21
Luiz
A vantagem principal é a velocidade. Você ganha velocidade, você ganha também versionamento da sua infraestrutura. Você transforma ela de uma forma assim, com muito mais valor ao seu time e à empresa. Então isso agrega muita a questão de como que você vai transformar aquela infraestrutura que pode se perder nas configurações que você fez, que nem o exemplo que o Edu deu de você entrar no portal e adicionar aquelas informações, transformar ela em algo que é mutável, que você pode configurar e replicar também, transformando como um blueprint também do que você fez ali.
00:02:18:00 – 00:02:39:00
Dudu
O que você falou Luiz, é importante isso. Ele transforma a sua infraestrutura em algo repetível. Você não fica mais preso naquele nossa, será que eu cliquei naquele checkbox? Será que eu marquei aquela opção? Como é que está no ambiente de dev? Como é que está no ambiente de produção? Então, fica muito mais fácil o rastreamento e manter de forma correta a sua infraestrutura.
00:02:39:01 – 00:02:56:21
Ângelo
Eu ia chamar a atenção exatamente para esse mesmo, para essa mesma característica que você falou da replicabilidade, porque se você tem um ambiente ali, você quer fazer o que vai Ctrl C / Ctrl V e seu ambiente está funcionando, você consegue até ver as configurações e consegue replicar, mas e se acontecer alguma coisa e esse meio de se perder? Como que você vai lembrar todos os detalhes que você fez?
00:02:56:21 – 00:03:24:23
Ângelo
Isso é um baita problema. Já passei por isso, então na hora que você falou de ser replicável, falei. Rapaz, é verdade.
Fernandinha
E sem contar que ajuda também aquele problema do tá dando pau em produção, mas na hora que eu tento simular no meu ambiente de desenvolvimento, funciona. É muito comum assim, principalmente com empresas que não utilizam infraestrutura como código, que é justamente as coisas estarem de alguma forma instanciadas de forma diferente ou alguma coisa que está diferente no ambiente que no final das contas acaba funcionando num ambiente e no outro não.
00:03:24:23 – 00:03:47:07
Fernandinha
E aí antes, antigamente era assim, derruba esse ambiente todo e vamos recriar tudo do zero, porque dá um trabalho gigante. Só que aí a infraestrutura como código nos dá em poucos passos você consegue recriar, criar novos ambientes numa mesma configuração, de uma forma muito rápida.
Luiz
E puxando um gancho de tudo que você falou eu acho que é muito interessante você parar para pensar nisso, você pode destruir a qualquer momento o que você fez ali.
00:03:47:07 – 00:04:07:15
Luiz
Você fala assim: “Cara, isso aqui deu errado, não tá legal, vamos refazer do zero e vamos construir isso aqui de novo.” E você pode simplesmente dar um comando ali na sua CLI e falar assim Terraform destrói isso tudo aqui eu não quero, vamos refazer isso. Você pode mudar, debugar suas informações, a sua infraestrutura e fazer isso de uma forma muito melhor, corrigindo bugs e você fazendo o versionamento do seu código que é importante.
00:04:07:15 – 00:04:30:10
Luiz
Uma coisa que como a gente tá falando de código é ter o versionamento dele e falar assim Cara, eu corrigi isso. E a infraestrutura estava certa. Subi, rodei Pipeline e destruiu tudo que estava lá ou alterou já lá no meu Azure, no meu GCP ou na minha WS.
Ângelo
É, legal, a gente já definiu aqui, então bem, o que é infraestrutura como código e as vantagens de ser replicável, a praticidade de você poder reconstruir o seu ambiente.
00:04:30:10 – 00:04:53:21
Ângelo
E aí você citou aí o Terraform, né? A gente já citou aqui algumas vezes o Terraform, mas e aí? O Terraform então é uma das ferramentas de infraestrutura como código. É a única? Tem outras? Por que a gente está falando só de Terraform aqui? É o mais popular?
Luiz
Ele com certeza é o mais popular. Por causa que a rede COP transformou se em um ambiente muito mais vantajoso para eles, que chegaram trazendo integrações com vários provedores e trazendo também.
00:04:53:21 – 00:05:14:12
Luiz
Acho que é uma facilidade muito grande, que é uma coisa que que é muito difícil quando você fala, acho que com infraestrutura de código e às vezes você pensar assim como eu vou aprender essa linguagem? Como que vai ser a minha experiência com essa linguagem? É difícil? Como é que é a curva de aprendizado? E o Terraform, ele te dá essa sensação de que ele é muito mais prático, que você faz tudo em bloco e é uma forma declarativa.
00:05:14:14 – 00:05:54:10
Luiz
Então você vai entregar ali no seu código. Simplesmente vou dizer que eu quero criar um servidor na AWS, quero passar essas configurações, não tem nenhuma complexibilidade nisso. A curva de aprendizado dele é mais baixa, mas você tem outras opções no mercado que nem a gente estava discutindo aqui antes de começar, o Pulumi me é uma grande vantagem que ele. Diferente do Terraform, ele tem uma forma de você escrever assim é um pouco mais complexa porque você não tem uma linguagem declarativa, mas você pode usar a sua linguagem de programação que você tem facilidade com ela para você declarar código também como infraestrutura.
Ângelo
Eu posso usar o Pulumi com Java?
Luiz
Pode com Java, com YAML ou com o que você tiver no seu coração.
00:05:54:10 – 00:06:15:02
Dudu
Eu acho que o negócio que as vezes traz essa barreira que acaba sendo algo que alguns desenvolvedores ficam meio que com medo, não sei se medo é a palavra certa, mas assustados assim olhando pro Terraform eu acho que é essa diferença dele ser feito usando uma linguagem declarativa, ao invés de uma linguagem imperativa. A gente está muito acostumado a usar essas linguagens imperativas no dia a dia de trabalho.
00:06:15:08 – 00:06:38:05
Dudu
Assim, chegar para um código e falar assim: cara, faça isso. Se acontecer isso, então faça aquilo. Enquanto essa condição é verdadeira, vá fazendo isso. No Terraform não, você fala: Terraform, eu quero que esse recurso aqui tenham essas características e esses recursos que eu estou falando aqui são todos recursos que tem que existir na minha infraestrutura, então o Terraform ele vai pegar aquele recurso e tentar olhar, falar beleza.
00:06:38:05 – 00:07:00:17
Dudu
Esse recurso aqui, deixa eu ir lá onde a minha infraestrutura está hospedada. E deixa eu pegar esse recurso aqui, deixa eu ver, eu marquei, eu falei com uma característica e tal. Esse recurso existe, mas não está com essa característica. Então deixa eu atualizar ou então vai chegar lá. Esse recurso não existe na minha infraestrutura, eu preciso criar. Ou então ele encontrou um recurso na minha infraestrutura que não está na minha declaração.
00:07:00:17 – 00:07:38:14
Dudu
Ele tem que apagar e ele se vira para conseguir fazer essas coisas. Então é isso que é ser uma linguagem declarativa. Eu declaro o estado que eu quero que ele chegue e ele vai fazer tudo para poder chegar naquele estado.
Fernandinha
Basicamente, então, Dudu, você declara o resultado, mas você não fala como que você vai chegar lá? É o próprio Terraform lá se vira para descobrir como chegar. Mas eu queria pegar numa vantagem que vocês falaram aqui em relação aos vários provedores, que eu acho que é uma das grandes vantagens do Terraform de você poder, como você falaram, instanciar uma infraestrutura, seja na Azure, na GCP ou na AWS ou até On-Premise.
00:07:38:16 – 00:08:16:18
Fernandinha
E aí eu queria entender com vocês que eu entendo justamente a grande vantagem disso, que você não tem lock de vendo fica realmente totalmente flexível se você quiser fazer uma migração e tudo mais. Mas eu queria perguntar para vocês se realmente não existe alguma desvantagem de usar uma ferramenta tão flexível para usar uma outra ferramenta mais nativa mesmo da nuvem, já que as vezes realmente lá no meu uso, no meu sistema, no meu produto, na minha empresa, minha infraestrutura tá toda na AWS. Será que eu preciso de uma ferramenta que é realmente tão agnóstica de provedor ou realmente, sei lá, pegar uma nativa
00:08:16:18 – 00:08:37:21
Fernandinha
da AWS lá, por exemplo, já não seria melhor?
Luiz
Eu acho que a desvantagem que você tem aí principal do Terraform em relação a você pegar por exemplo, que nem se citou, eu vou trazer mais para a minha vivência. A AWS tem o Cloud Formation. O Cloud Formation, você tem a forma declarativa ali em YAML. Ele tem um padrão bem parecido com YAML para você declarar a infraestrutura.
00:08:38:03 – 00:09:01:19
Luiz
A diferença entre o Terraform para um código com o Cloud Formation é que o Cloud Formation, ele vai te entregar a vantagem de você ter para trazer recursos que você tem que esperar o Terraform, a hashicorp desenvolver ali, porque o Terraform ele é o que a gente chama de DSL: domain single language. Eu acho que é que é isso, porque é uma linguagem que quem está entregando ali o recurso é a Hashicorp.
00:09:01:23 – 00:09:34:22
Luiz
Ela está criando aqueles recursos, então você tem que esperar ela te entregar para você falar assim: Olha, lançou uma nova ferramenta na AWS de IA, mas eu preciso transformar isso em código. Você vai ter que esperar ali esse recurso sair numa nova versão.
Ângelo
E geralmente demora para sair ou a Hashicorp costuma entregar rápido?
Luiz
Cara, eu não tenho essa noção de tempo, mas eu acredito que se você for parar para comparar que nem a Fernandinha usou a comparação de linguagem que vem nativa da nuvem para Terraform, com certeza tem um tempo considerável, porque a gente está falando assim de uma vida ágil e ainda mais sobre os novos recursos que a gente está vendo sair
00:09:35:02 – 00:09:59:10
Luiz
na nuvem. Então você vai ter muito mais valor pegando código que vai estar ali, no Cloud Formation transformando código e você já entregando a sua infraestrutura. Com certeza assim tem essa vantagem em cima do Terraform.
Dudu
Eu acho que o Terraform ele tem uma vantagem, digamos assim, em cima de usar algo nativo no sentido de que ele já tem muita coisa agregada, até para você conseguir criar os seus recursos.
00:09:59:11 – 00:10:20:18
Dudu
Tentar definir um pouco de relação entre eles, de definir uma hierarquia, ou às vezes até uma certa dependência ou às vezes até uma agnósticidade. Por exemplo, num projeto que a gente teve aqui, a gente foi criar um data Bricks dentro da Azure. Então a gente usando os recursos que a Azure provê lá para outra forma, a gente criou um data Bricks.
00:10:20:20 – 00:10:40:08
Dudu
Só que a partir do momento que a gente cria esse Azure Data Bricks lá dentro, o gerenciamento dele interno, ele trata como se fosse um Data Bricks normal, ele te dá essas facilidades. A HashiCorp ela tem o Terraform Cloud, onde há um ambiente onde você pode rodar o seu Terraform lá, que é uma coisa importante: o Terraform, ele tem que ser executado, ele tem que rodar em algum lugar, nem que seja na sua máquina local, mas por exemplo,
00:10:40:08 – 00:11:01:15
Dudu
num Terraform Cloud da vida, você consegue definir diferentes, que ele chama de workspaces, assim. Falar: cara, vou criar um workspace aqui para lidar só com a parte de dados, com a parte de banco de dados. Vou criar uma outra parte aqui só para lidar com a parte de computação, então vou criar coisas virtuais, webapps ou alguma outra coisa.
00:11:01:15 – 00:11:44:07
Dudu
Você consegue fazer essa ligação entre esses workspaces. Você consegue falar: Cara, esse Workspace de computação de compute das máquinas virtuais consegue injetar, por exemplo, a string de conexão dos bancos que foram criados lá no outro workspace, sem você precisar ficar pegando segredo aqui e passando para lá e tudo e tal. Então ele tem essa vantagem. Assim, se você definir e você fazer essas amarras e essas orquestrações, eu acho que é uma palavra melhor, entre sua infraestrutura. Inclusive que ele sugere como boa prática de você não fazer a sua infraestrutura inteira de uma vez usando um workspace só, usando uma única declaração, porque vai virar um linguição gigante, vai ser difícil de você se atualizar e evoluir.
00:11:44:07 – 00:12:04:15
Dudu
A gente sentiu isso na pele no último projeto, sabe? A gente criou tudo meio que dentro de um workspace só. Então é até um desafio do Terraform, que é o seguinte: se você fizer isso e duas pessoas precisam mexer na infraestrutura, eu vou criar um banco novo, o Ângelo vai criar um outro webapp. Cara se nós estamos fazendo isso aí em paralelo,
00:12:04:15 – 00:12:21:02
Dudu
Na hora que eu mando executar o meu, ele vai criar meu banco. Aí o Ângelo não sabe que eu estou fazendo isso, declarou um novo webapp. O Terraform vai olhar: Beleza, O Ângelo declarou um novo webapp. Deixa eu olhar aqui: não existe. Vou criar o webapp dele, só que ele também tá olhando lá e viu que tem um banco que não está na declaração do Ângelo.
00:12:21:05 – 00:12:47:06
Dudu
Ele vai apagar o banco que eu criei, entendeu? Esse é um desafio de se usar Terraform, até por isso quebrar em workspaces menores de acordo com o tempo de vida desses recursos, com o ciclo de alterações desses recursos. Tipo assim, algo mais, mais amarrado no ciclo de alterações desses recursos é mais recomendado.
Fernandinha
Ô Dudu, mas eu fiquei numa dúvida na sua explicação porque eu tinha perguntado em relação às ferramentas nativas das nuvens.
00:12:47:06 – 00:13:15:04
Fernandinha
E aí, tudo isso que você falou de vantagem e de desafios também do Terraform não é semelhante para as outras ferramentas também? Para as ferramanetas nativas?
Dudu
É, pois é, tem uma dificuldade de se usar essas ferramentas nativas. Igual na Azure tem o que eles chamam de arm templates, que se no Cloud Formation lá na AWS é usando YAML, do lado da Azure, é usando o Jeison, mas é marromeno a mesma coisa, é declarativo também, do mesmo jeito.
00:13:15:06 – 00:13:43:07
Dudu
Lá é um Jeison com sua infraestrutura, então se eu preciso, igual no exemplo que eu dei antes, criar uma parte com meus bancos de dados, outra parte com meus servidores, com minhas máquinas virtuais, eu vou ter que ficar responsável por fazer essas duas coisas conversarem. Se eu não quiser colocar tudo num único linguição lá, que vai ter toda minha estrutura do negócio, que é justamente o outro exemplo que eu dei, que é algo que é complicado de a gente evoluir.
00:13:43:09 – 00:14:17:14
Dudu
É muito difícil duas pessoas trabalharem ao mesmo tempo em cima de infraestrutura, se sua infraestrutura está toda num arquivo só. Eu acabo tendo que desenvolver isto, então eu vou ter que fazer um pipeline que vai executar o meu template de banco, vou ter que pegar aquela string de conexão que saiu dali, guardar em algum lugar e aí meu pepiline continua execução para poder criar as minhas máquinas virtuais, passando por aquela string de conexão ou eu crio um outro pipeline que vai ler essa string de conexão… Então, tipo assim eu vou ter que prover algo que já está pronto em cima dessa parte do Terraform acho que justamente para poder passar esse tipo de problema que talvez essas linguagens, não
00:14:17:14 – 00:14:41:11
Dudu
linguagens, né? Mas essas ferramentas já nativas das nuvens tenham, eu acho que isso aí ajuda muito, sabe? O fato de o Terraform já ser super maduro, já tem muita coisa ali pronto.
Fernandinha
É uma ferramenta, não é popular, tão popular à toa também, né?
Ângelo
E é exatamente isso que eu ia falar, nessa comparação de Terraform VS as ferramentas nativas, eu acho que um quesito importante de avaliação é a popularidade.
00:14:41:12 – 00:15:02:22
Ângelo
E aí o Terraform ele é mais popular hoje, então é muito mais fácil você achar um desenvolvedor que sabe mexer, não necessariamente um desenvolvedor. Quem está desenvolvendo pode ser uma pessoa do DevOps, pode ser um arquiteto, enfim. Mas a gente pode até explorar mais isso. Quem é o responsável por manter o código? Mas é muito mais fácil achar essa pessoa do que achar uma pessoa específica de Cloud Formation.
00:15:03:00 – 00:15:30:17
Ângelo
uma pessoa específica de arm template. Achar uma pessoa de Terraform hoje no mercado é mais fácil, né?
Luiz
Até a curva de aprendizado você treinar ela também dentro dessa linguagem, você esperar ela ter uma maturidade maior ali, eu acho que é até menor, porque igual que nem o Eduardo comentou, é muito mais complexo você ter ali escrevendo a sua configuração, seja em YAML, seja em Jeisom, porque a pessoa vai ter que trazer um arquivo muito maior.
00:15:30:22 – 00:15:59:18
Luiz
E às vezes o Terraform tem essa facilidade. E aí é um ponto que entra na pergunta que você fez, que é uma vantagem dele em cima das outras, que você pode quebrar em vários módulos o que você está fazendo. E você tem a possibilidade de você criar a sua configuração de forma separada, então ler o código do Terraform também se torna mais simples, até gerenciar o estado dele é algo mais fácil de se fazer, porque o backend dele você pode colocar ele em qualquer lugar, e aí você pode compartilhar os seus backends também.
00:15:59:18 – 00:16:15:23
Luiz
E as pessoas não não precisam cair naquela armadilha que nem o Edu comentou que é de o banco foi criado com uma pessoa, outra pessoa vai aplicar a configuração e aí vai lá e destrói o banco que já tinha sido criado.
Ângelo
Outro dia eu vi uma pessoa usando Terraform, mas eles estava usando junto uma outra ferramenta que se chama Terragrunt.
00:16:16:01 – 00:16:38:16
Ângelo
Vocês conhecem essa ferramenta? Para que serve? É útil? Para que assim? Em qual cenário?
Luiz
O Terragrunt ele é uma ferramenta muito boa. Ela incorpora com o Terraform de uma forma muito massa, porque abstrai de você ter que ficar declarando múltiplas variáveis com os mesmos valores para vários módulos. Eu pelo menos uso ela dessa forma, pelo menos para você abstrair isso.
00:16:38:16 – 00:17:02:08
Luiz
Então eu consigo, por exemplo, o Terraform faz isso nativamente, você tem essa possibilidade de fazer. O Terragrunt também tem outras possibilidades, mas essa é uma funcionalidade que eu acho muito legal dela, que é você importar essas variáveis para os seus módulos, então…
Ângelo
É menos Ctrl C / Ctrl V né?
Luiz
Menos Ctrl C / Ctrl V, com certeza. Você pode simplesmente declarar que você está usando aquela variável que já tinha sido definida no root do projeto e importar ela para ele dentro de seu modo de falar.
00:17:02:08 – 00:17:22:04
Luiz
Assim olha, você vai passar por essas variáveis e é essas configurações que você vai trazer. Então isso é muito bom para quando você está fazendo, por exemplo, uma configuração de um Hold Balance, ou você está fazendo uma configuração de um Security Group, que você tem que passar inúmeras regras, então eles já conseguem colocar os IP’s, as rotas, as portas que você está definindo e isso é muito importante.
00:17:22:10 – 00:17:43:19
Luiz
Eu vou ser sincero, a gente, todo mundo já passou um pouquinho de dev, a gente sabe que isso é chato de ficar fazendo. Não dá para ficar escrevendo o mesmo código toda hora. Eu acho que é uma coisa que vem do Terraform, que é o modo dry: don’t repetir yourself. Então isso é muito importante. Eu acho o Terragrunt, ele traz essa, essa facilidade, a mais aí..
00:17:43:19 – 00:18:07:04
Ângelo
Legal, imagino pelo que você explicou também, que talvez seja bem útil em cenários onde você tem microsserviços e eles são bem parecidos ou tem uma variável que vai ser usada na maioria dos microsserviços, com algum tipo de configuração que vai ser usada em vários microsserviços, então talvez o Terragrunt até seja bem útil num cenário desse também.
Luiz
Com certeza, Ainda mais se tiver um cenário com orquestração de um cluster de vários clusters Kubernetes.
00:18:07:04 – 00:18:28:01
Luiz
Eu acho que ele sim é essencial. Eu já passei por uma experiência onde eu tinha uma situação de eu ter que criar um cluster Kubernetes para dois ambientes diferentes. Eles tinham que ser replicados, mas eles tinham cada um suas variáveis porque eram ambientes diferentes. Então, o Terragrunt assim, para os meus módulos eu conseguia trazer as configurações a partir do arquivo de configuração do Terragrunt.
00:18:28:01 – 00:18:51:03
Luiz
E não ter que ficar me repetindo toda hora, então isso era muito importante pro meu código.
Fernandinha
Bom ouvir você falando, Luiz, em relação ao Terragrunt e ao Terraform também, que você falou aí do don´t repeat yourself, você falou um pouco sobre modularização e tal. Então a gente, assim, como estamos falando de infraestrutura como código, nada melhor do que aplicar boas práticas de código, criando infraestrutura.
00:18:51:05 – 00:19:11:10
Fernandinha
Então eu queria perguntar pra vocês quais são as boas práticas que se utiliza normalmente ao criar, ao interagir aí com a ferramenta Terraform.
Luiz
Eu acho que é a principal coisa que eu gosto de falar do Terraform. É principalmente a parte segurança. É uma coisa que eu sempre me cobro também, porque na parte de DevOps a gente sempre trabalha com muita informação que acaba sendo sensível.
00:19:11:15 – 00:19:31:19
Luiz
Você trabalha com chaves de acesso, você trabalha com números, chaves de API, que as vezes você vai ser necessário. Eu faço isso muito porque eu trabalho, por exemplo, com a Cloud Flare. Então se eu deixar os registros da AMS para alguém, eu posso acabar deixando o cliente exposto. Então isso não é legal, então é sempre você bom ter em sua mente.
00:19:31:19 – 00:19:50:08
Luiz
Tipo assim cara, não posso deixar essas variáveis aí, é de praxe, mas é sempre bom falar: Evite deixar isso nas suas variáveis também, nos seus arquivos de variáveis, porque pode ir ali pro seu github, vai ficar registrado. Usa as vezes um serviço como um Secret Manager é sempre importante também. Porque o Terraform não tem essa ferramenta.
00:19:50:08 – 00:20:09:07
Luiz
O Kubernetes tem isso, apesar de que a gente não tem nada a ver com a parte de infraestrutura como código, mas ele tem um gerenciamento de secrets, então é uma diferença que o Terraform ainda não tem. Eu acho que é algo muito importante para se ter ali.
Ângelo
Mas o Terraform consegue usar, né? Igual você falou do Secret Manager ou do Azure Key Vault e por aí vai…
00:20:09:09 – 00:20:28:03
Luiz
Sim. Você consegue usar ali e integrar para evitar esse tipo de situação acontecendo. Eu acho que a principal coisa que você pode fazer também de prática no Terraform é você transformar suas variáveis em objetos. Eu acho que isso é uma coisa que eu particularmente gosto muito de fazer, porque eu consigo ter uma consistência maior e evitar, por exemplo, definir.
00:20:28:05 – 00:20:53:14
Luiz
Eu vou definir 500 variables aqui no meu arquivo variables.tf ou tfvars e falar assim: Olha, estou puxando aqui a var.isso. Não fica tão legal. Às vezes é mais fácil você transformar aquela sua variável, por exemplo, eu tenho as configurações da minha instância, do meu servidor. Essa é imagem, esse é o IP, esse aqui é o tipo de configuração que eu vou usar e esse é o meu objeto, minha instância,
00:20:53:14 – 00:21:15:00
Desconhecido
meu servidor, e você usar dessa forma eu acho que é muito mais prático até para quem vai ler o seu código fica bem melhor.
Ângelo
Depois ele lê tipo servidor.IP, alguma coisa assim, né?
Luiz
É exatamente.
Dudu
Ainda mais pelo fato dele ser declarativo né cara? Fica tipo assim, bem explícito da onde está vindo, o que que é aquilo por que você está usando, qual a semântica de uso daquela variável, em qual local ele está colocando…
00:21:15:00 – 00:21:43:20
Dudu
E eu acho que é isso. Tipo assim, uma dos principais coisas é realmente essa questão da modularização. Cara, tem um ganho enorme a partir do momento que você entende isso, até como replicação de boas práticas. Aliás, não só boas práticas de Terraform, mas boas práticas de infraestrutura. Então, eu estou numa empresa onde eu vou criar determinados projetos aqui, então todo o projeto da minha empresa vai ter que começar com um webapp configurado dessa forma,
00:21:44:01 – 00:22:02:10
Dudu
Com um Key Vault associado e assim, assim assado. Você pode definir um módulo para aquilo e distribuir aquele módulo dentro da sua empresa e todo mundo vai usar de forma padronizada, com as boas práticas que a sua empresa define, com seus guidelines, com sua forma de trabalhar. Então, acho que isso aí é uma vantagem muito grande.
00:22:02:10 – 00:22:39:18
Dudu
É uma boa prática muito grande, a gente pensar nessa modularização e como organizar os pequenos blocos da sua infraestrutura.
Fernandinha
Essa vantagem que você falou, ela é bem interessante. Dessa padronização da infraestrutura de uma empresa que você consegue então, com essa distribuição, com que os vários produtos, vários softwares, tenham padronizações. E aí assim, times de plataforma ou times de tipo CCOS, que realmente lidam com a infraestrutura da companhia, acabam se beneficiando muito, por criar esse tipo de padrão e os times acabam não precisando endereçar esse tipo de coisa e a infraestrutura fica mais centralizada de uma forma.
00:22:39:18 – 00:23:10:19
Fernandinha
Eu acho que isso é uma vantagem também muito legal de se ter infraestrutura como código no geral.
Luiz
É com certeza uma coisa que é muito que eu acho que é legal a gente trazer é a qualidade também do código. O Terraform é um código, a gente está escrevendo, então é importante a gente também ter em prática que analisar aqeuele tipo de código, você ter um lint ali também para te ajudar a formatar aquilo ou às vezes você fazer integração com o, eu descobri isso recentemente, foi até uma KT aqui da dti que eu perguntei e falei assim: Gente, o Sonarqube ele tem alguma integração com o Terraform?
00:23:10:21 – 00:23:33:11
Luiz
E aí o pessoal falou assim: Cara, boa pergunta. Nativamente não tem, mas você tem plugins que você pode ajudar e transformar isso. Então qualidade de código, você tem aí algumas ferramentas que integram com o Sonar que fazem essa análise e também outras ferramentas de segurança que, pegando o gancho que o Dudu citou, foi você ter aquele knowhow de infraestrutura.
00:23:33:11 – 00:23:56:11
Luiz
Sua infraestrutura, às vezes, você está ali provisionando, você está dando permissões, você está dando acessos a múltiplos usuários, mas você está sabendo à que que você está dando acesso? Você está analisando aquilo que você está fazendo? Existem ferramentas hoje, eu cito uma que é o IS, e o sneaky, que você pode integrar ele por exemplo, à uma pipeline que vai analisar o teu código terraform e vai falar assim: cara, aqui você está dando uma permissão além do necessário.
00:23:56:13 – 00:24:17:14
Luiz
Você tem certeza que assim que você vai você vai passar essa informação? Isso é muito legal, porque igual o Azure e a Amazon, elas tem ali o seu nível de permissionamento bem detalhado. E essas ferramentas, elas fazem essa análise de uma forma muito criteriosa, que seguem o white paper que eles dão para as boas práticas dentro da cloud.
00:24:17:17 – 00:24:37:12
Dudu
Isso. Até pelo fato do próprio Terraform, ele funciona meio que em duas etapas. Primeiro ele analisa todos os seus arquivos lá e como que está a sua infraestrutura para criar o que ele chama de plano de execução. Então ele vai criar esse planejamento. Vai falar: cara, é isso aí que eu tenho que fazer, eu tenho que criar A, B e C, atualizar D, E e F e apagar G, H e I.
00:24:37:14 – 00:25:04:16
Dudu
E então ele define aquele plano. E aí você consegue avaliar aquele plano para saber se era isso mesmo? Está tudo certo? Então beleza, tá tudo certo. Você aplica o plano. Então essas ferramentas, igual o Luiz falou tipo Sneaky e o IS, eles entram nesse meio, entre a etapa de planejamento e a etapa de aplicar, pra ele falar: cara, pera aí, está planejado aqui dar um acesso de Super Admin para o fulaninho de tal no meu banco de dados aqui, com toda a minha folha de pagamentos da empresa.
00:25:04:16 – 00:25:35:20
Dudu
Pera aí, pode ser algo que não é legal. Então existem essas políticas, né? Essas policies que você define, que você consegue aplicá elas de forma geral. Principalmente se você está usando o Terraform Cloud, você consegue dentro da sua organização ali dentro falar: Olha cara, essa permissão de Super admin não pode ser aplicada. Cara, não pode usar zero trust para a parte de segurança, você vai dar permissão necessária só para aquilo ali. Então você consegue barrar e ele vai falar: cara, você não vai executar esse Terraform aqui, cara, não vai adiantar. Isso traz essa camada de segurança adicional, sabe?
00:25:35:20 – 00:25:53:01
Dudu
As vezes time né? Porque essa é uma boa prática né? Até passar essa parte de infraestrutura para o próprio time cuidar e tudo, sem precisar ficar vindo da Enterprise, da empresa como um todo, criar infraestrutura e seu time está só esperando ter o webapp para você publicá lá e tudo. Pode dar essa permissão para o time. Beleza time.
00:25:53:01 – 00:26:10:06
Dudu
Você quer criar uma infraestrutura? Tá aqui. só que você vai seguir esses guard rails e esses guidelines aqui que a gente está definindo para você não fazer coisa errada. Tipo assim cara, você quer ter liberdade de criar sua própria infraestrutura: está aqui. Mas você não vai dar atenção super de mim para você. Você não vai. Você não precisa disso.
00:26:10:08 – 00:26:37:09
Dudu
Então eu acho que as coisas conseguem trabalhar. Você consegue dar poderes para o desenvolvedor e para o time e ajudar ele a não fazer coisa errada, a manter tudo dentro do que deveria estar nos princípios de segurança de tudo.
Ângelo
Até porque com grandes poderes vem grandes responsabilidades. Vocês deram bons exemplos aí de guidelines e de segurança, para a gente não deixar o desenvolvedor fazer merda
00:26:37:14 – 00:26:52:04
Ângelo
no final das contas. E eu lembrei de, na hora que o Dudu comentou aí que o Terraform, ele gera
Dudu
Gera um plano de execução.
Ângelo
Isso. E eu lembrei que eu já trabalhei no projeto, não lembro o nome da ferramenta, mas às vezes vocês lembram. Por isso que eu vou comentar aqui. Que ele te dava também a estimativa de custo.
00:26:52:04 – 00:27:12:17
Ângelo
Olha, do jeito que está agora, a sua infra vai custar 40.000 R$ por mês. Aí com o seu, com esse novo plan que você está querendo executar aqui, vai passar para 60.000 R$, um aumento bem expressivo assim, sabe? Então tem essas ferramentas também para gente monitorar o custo e barrar também, se for o caso. Você sabe o nome de alguma dessas ferramentas? Eu esqueci
00:27:12:17 – 00:27:33:18
Dudu
Não, eu esqueci. Mas é essa nossa tinha. Só que, isso, igual você falou: pode dar um cheiro para a gente saber se está indo por um caminho muito errado. Pô, era 100, agora 200.000. Tem alguma coisa errada aí já, provavelmente. Mas é um número que não dá para confiar muito. Até porque, muito do que a gente fala hoje de infraestrutura fica em nuvem.
00:27:33:20 – 00:27:53:09
Dudu
E a forma mais comum de nuvem é pagar pelo uso e não de antemão. Vou criar um recurso e ele vai custar 100$. Então cara, essas ferramentas de estimar custo, até pagar pelo uso, ela não sabe, ela vai estimar o que? Ela não sabe como vai ser usada. Poxa, temos ferramentas lá, banco de dados na Azure, que você paga lá pelo quantidade de recursos que você usa.
00:27:53:11 – 00:28:11:13
Desconhecido
O antigo DTU que eles tinham lá. Cara, como é que uma ferramenta dessa vai estimar quanto você vai gastar nisso? É uma ferramenta que é colocada dentro do fluxo de execução do Terraform Cloud nossa ali e ela no final realmente fala: Ah, o custo é tanto e vai para tanto. Mas cara, tá longe de bater com o custo real que a gente verifica lá Azura.
00:28:11:15 – 00:28:35:20
Dudu
Então, eu acho que ela serve muito mais como um indicador.
Fernandinha
É, talvez é um cheiro para merda. Tipo assim, se você está fazendo muita merda, você deve conseguir descobrir pelo menos.
Dudu
Exatamente, bem rápido. Você consegue barrar antes você fazer isso. Tipo assim, quem nunca que foi brincar lá com seu próprio cartão de crédito lá na nuvem e falou Ah, meu Deus, to criando um negócio aqui que não podia, vai ficar caro, destrói.
00:28:35:22 – 00:29:02:18
Dudu
Ou então manda aquele famoso e-mail de perdão lá para a Microsoft. Perdão Microsoft, tava doidão, criei aqui, esqueci de apagar. Então, ela serve mais para isso do que realmente você olhar e achar que ela vai prever quanto você vai gastar. Isso aí as ferramentas da nuvem, da sua própria nuvem, se você tiver falando de nuvem, vão ser bem mais assertivas do que ela.
00:29:02:18 – 00:29:22:15
Luiz
Falando mais da parte de nuvem, isso é um pouco a maldição do pase as you go, né?Você pensa assim: Putz, eu vou fazer a infraestrutura, a infraestrutura ela vai estar lá provisionada, vou pagar x PTO. Às vezes você vai ter um momento, uma situação que vai fazer você pagar mais para aquilo, dependendo até da infra que você fez por causa de requisição, de recursos usados.
00:29:22:15 – 00:29:50:02
Luiz
E realmente, prever isso é muito difícil. Mas existem mesmo ferramentas, eu lembro de uma que eu acho que ela é paga, eu acho, se eu não me engano, chama infra costing que você consegue usar ela ali, conta Terraform e prevê esse custo. Ela te dá exatamente às vezes um custo ali daquilo que você está fazendo do seu recurso. Mas já é interessante porque eu acho que no mundo hoje que a gente fala muito de finops, é uma coisa que para infraestrutura como código, é muito importante você ter essa análise do que você vai gastar.
00:29:50:02 – 00:30:08:18
Luiz
Então acho que assim, uma tendência até para agora, nesse momento que a gente está tendo aí. Essa análise junto ao planejamento da infraestrutura como código para te predizer assim: opa, você tá gastando isso aqui no final do teu mês com essa infraestrutura que você tá provisionando. Então assim, eu acho que é uma coisa bem interessante pra gente pensar, até para um futuro
00:30:08:18 – 00:30:36:18
Luiz
com a infraestrutura como código, que é pegar hoje o modelo de aprendizado de predição e usar eles para falar exatamente isso pra gente.
Fernandinha
Sim, com certeza. E falando sobre futuro, estou curiosa na opinião de vocês em relação a um tema de evolução mesmo da ferramenta do Terraform ou até dos provedores de nuvem. Porque me parece, a gente falou um pouco sobre a linguagem declarativa e quanto é mais fácil fazer a instanciação, o provisionamento da infraestrutura utilizando ferramentas que têm linguagem declarativa.
00:30:36:19 – 00:31:01:04
Fernandinha
Mas me parece que uma evolução muito possível seria a gente passar a criar a infraestrutura utilizando linguagem natural. Ah, eu não estou, não quero mais, né? Assim, poderiam os meus provedores de nuvem lá ou o próprio Terraform evoluir para um lugar de que eu não vou precisar mais utilizar uma linguagem que eu preciso de aprender, eu preciso de pessoas que saibam. Mas eu posso, com a linguagem natural, conseguir provisionar meus recursos.
00:31:01:04 – 00:31:23:04
Fernandinha
Vocês acham que vai pra esse caminho? Cês tão vendo já indo pra esse caminho? Qual é a percepção de vocês?
Luiz
A minha percepção talvez seja ainda um pouco cética em relação a isso, de que eu ainda não vejo essa movimentação indo em direção a uma mudança onde a gente vai ter uma linguagem natural pra ser usada assim. É claro que cada vez mais a infraestrutura como código está ficando um pouco mais simplificada
00:31:23:06 – 00:31:44:18
Luiz
pra gente trazer isso e provisionar. Mas, com certeza, a gente vai chegar num momento onde os prompts de comando vão simplificar muito a talvez essa provisionamento. Porque hoje assim, se você quiser provisionar um recurso simples, no seu ambiente de testes, você verá… Eu gosto. Eu apelidei ele assim, tá gente, pro seu Gepetto, que é o GPT e você pode chegar lá e ele vai te provisionar
00:31:44:23 – 00:32:08:01
Luiz
pra você um bloco de código muito fácil. Então pode chegar o momento onde a gente vai usar esses prompts, com certeza. Ou talvez transformar essa linguagem ainda mais pra chegar num nível de abstração muito maior. Hoje eu não vejo esse movimento tanto, trabalhando assim com o Terraform diariamente. Talvez eu tenha perdido algumas coisas assim entre comunidade, mas eu realmente não tenho esse sentimento.
00:32:08:02 – 00:32:33:01
Dudu
Eu vejo tipo assim, todas as linguagens de programação evoluindo para esse tipo de coisa, não só Terraform, sabe? Eu imagino que com a evolução da IA isso vai se tornar algo natural pra todo tipo de coisa, nós vamos gerar essa camada de abstração em cima. Isso, que hoje a gente chama de linguagem de alto nível, esses if em linguagem baixo nível pra gente, aquelas: escovar bit, num sei o que lá e tudo. Cara, as IAs, elas vão trazer essas evoluções.
00:32:33:01 – 00:32:54:07
Dudu
Eu acho que hoje ainda não tem, ainda não está tão maduro pra gente poder usar de forma natural e falar: Terraform, eu quero um servidor de aplicação com essas e essas características. Push, pronto. Eu acho que ainda faltam alguns passos para a gente chegar lá.
Ângelo
Mas nada impede da gente entrar no chat GPT e pedir ele gerar um arquivo Terraform hoje, né?
00:32:54:10 – 00:33:18:09
Ângelo
Ô Gepetto.
Luiz
Nota de essa daí quem inventou e falou pra Gepeto não fui eu.
Dudu
Essa semana eu pedi muito pra ele gerar pipeline do GitHub para mim. Cara, como é que faz isso aqui no GitHub?
Fernandinha
É só isso mesmo.
00:33:18:11 – 00:33:43:01
Fernandinha
Eu também só programo com o GPT, só ele que gera meus código atualmente. Eu que não trabalho tanto com programando no dia a dia, então maravilhoso! Mas eu concordo muito com você, Dudu. Assim, a gente já falou muito aqui no Entre Chaves sobre isso, sobre essas camadas de abstração. E assim, pra mim, o futuro vai ser por aí mesmo. A gente vai adicionando camadas de abstração a ponto de que daqui a pouco, o Ângelo até falou, né?
00:33:43:02 – 00:34:03:07
Fernandinha
Os papéis de quem que gerencia a infraestrutura como código, mas daqui a pouco vão ser pessoas talvez que não tenham muito conhecimento mesmo de programação.
Dudu
Eu, pra mim, vai continuar ter programadores. Só que você não vai fazer linha de código, você vai fazer prompt, cara, você vai conversar. A gente não vai morrer, nós vão continuar aqui.
Ângelo
Você não vai precisar estudar tanto, só ter que e tanto no detalhe.
00:34:03:07 – 00:34:24:23
Dudu
Pra caramba, que isso! Nós vão precisar estudar muito. Nós não vamos precisar entrar nesses detalhes de implementação.
Ângelo
Isso que eu quis dizer.
Dudu
Cara, baixo nível, não tem gente que mexe com registrador mais. A metade da galera que escuta aqui o Entre Chaves não deve nem saber o que é um registrador no computador, cara. Porque já existe a camada de abstração em cima que te permite nem pensar nisso
00:34:24:23 – 00:34:47:05
Dudu
E é a mesma coisa que com a IA vai ser, cara. Vai existir os programadores, vai existir desenvolvedores. Se eles vão usar outras formas de se gerar, de chegar no objetivo que você quer chegar que é só aplicação funcionando.
Ângelo
Legal. Então a gente falou muito sobre as tendências e aí imagino que algumas pessoas que estão ouvindo a gente, provavelmente se interessaram. E para começar, vocês têm algumas boas referências e algumas dicas aí?
00:34:47:06 – 00:35:06:02
Ângelo
Alguém que nunca mexeu com Terraform ou com infraestrutura como código. Como é que vai ser o Hello World?
Luiz
Olha, eu acho que o Hello World mais fácil que você tem, com certeza é passar pelo YouTube. Não vou te falar assim, vender um curso específico, mas com certeza no YouTube você vai encontrar pessoas com cursos gratuitos que vão te dar uma base incrível.
00:35:06:02 – 00:35:23:04
Luiz
Eu comecei pelo YouTube com o Terraform e assim me deu uma base muito boa e que me trouxe a querer conhecer mais da linguagem. Mas não só isso, me despertou falar assim: não dá para viver só daqui, como é que eu vou fazer documentação. E a documentação do Terraform, acho que é uma coisa que eu ponho minha mão no fogo pra falar dela.
00:35:23:04 – 00:35:39:19
Luiz
É muito boa, é muito boa. Ela te dá os exemplos, você tem lá as formas de como que você tem que aplicar, você tem como que você vai usar os argument reference, que são os argumentos de cada bloco de recurso que você vai ter. Aqueles que são required, que são os blocos que você tem que passar, os blocos que são opcionais.
00:35:39:19 – 00:36:08:21
Luiz
Então assim, leia a documentação dele. É simples, é fácil. Então são esses dois pontos chaves, assim, para quem está querendo começar, vai e começa a desenvolver seu primeiro Hello World. Pode pegar qualquer cursinho que você encontrar ali no YouTube e leia a documentação porque você vai ter uma base muito grande. Pode começar pela AWS que ela é de graça, não é nenhum merchan pra ela.
Fernandinha
Luiz está ganhando comissão.
Luiz
Não tô ganhando comissão.
Ângelo
Alô grandes marcas de nuvens.
00:36:08:23 – 00:36:27:01
Luiz
Mas você vai conseguir acessar ali a parte free da AWS e fazer o teu Terraform muito mais simples também. Ou se você quiser começar por uma base que é um pouquinho mais complicada, usa o On Premise, ali também que também dá pra fazer.
Dudu
Eu não lembro como que eu comecei. Já tem alguns anos, então já não lembro mais como que eu aprendi
00:36:27:01 – 00:36:51:18
Dudu
Terraform, mas hoje no mundo é muito Azure. Eu uso muito o recurso da Azure, então eu vou na documentação do provedor de recursos Azure para o Terraform. Porque o Terraform tem esse esquema dos provedores. Mas essa parte eu discordo um pouco do Luiz, que eu acho ela meio estranha, porque eles dão alguns nomes para alguns parâmetros que são diferentes do que você está acostumado lá no portal da Azure, por exemplo, se você for ver lá uma determinada funcionalidade, tem determinado nome, no provedor lá, tá com outro nome.
00:36:51:18 – 00:37:23:16
Dudu
Aí o parâmetro lá chama X e até você mapear ele, o que ele tem a ver com aquele lá, é um pouco diferente. Isso não deixou isso muito claro não. Não sei se é a mesma coisa com o da AWS, mas o da Azure tem esse porém.
Luiz
Não acontece tanto quanto a AWS. Mas você me lembrou de um caso muito específico, porque eu estou fazendo transição de uma infraestrutura assim, não infraestrutura necessariamente, mas tudo de um cliente para que já está provisionado na cloud Flare para Terraform, então, o que já existe eu estou passando para Terraform.
00:37:23:17 – 00:37:41:17
Luiz
E exatamente esse mesmo problema que você citou, é o que eu estou passando. Existem alguns argumentos de referência que não tão bem descritos. Mas eu acho que assim, para quem vai começar na questão, acho que talvez dependendo da cloud que a pessoa escolher ali, ela vai estar até bem tranquila para entender isso, mas é porque vai acabar tendo que ter dois mundos.
00:37:41:22 – 00:37:59:07
Luiz
Você vai ter que entender um background de cloud e você vai ter que ter uma mente aberta para o Terraform.
Dudu
Nós estamos falando para quem vai começar, para quem vai começar as coisas básicas estão lá e isso é bem mapeado. Se você consegue ver os exemplos que eu dei, é muito mais coisas mais específicas, usos mais avançados e tudo, configuração de rede, enfim.
00:37:59:08 – 00:38:26:17
Dudu
Então se você vai começar, pode confiar que os principais vão estar lá e vão estar bem descritos.
Fernandinha
Bom galera, então assim, acho que a gente conversou bastante sobre Terraform. Parece que é uma ferramenta que não é popular por acaso. Como eu falei, tem bastante vantagens, assim como algumas desvantagens também, assim como qualquer coisa. E como tudo aqui no Entre Chaves, é muito importante que você que vai começar a utilizar e analisa, analisa os prós e contras e tal, se vale uma migração, se vale começar com algo nativo ou não, enfim.
00:38:26:19 – 00:38:50:13
Fernandinha
Mas com certeza é uma ferramenta que é muito popular e que tem muita, uma comunidade muito forte por trás, que você com certeza consegue tirar suas dúvidas e aprender bastante com a comunidade, com os materiais de apoio, tanto documentação, quanto vídeos, etc. Bom então galera, muito obrigada, é isso, valeu e até a próxima! Tchau, tchau.
Ângelo
Valeu pessoal! Até mais!
00:38:50:19 – 00:38:59:17
Luiz
Valeu pessoal, até mais.
Dudu
Até a próxima!
Quais são as vantagens de usar o Terraform como ferramenta de automação de infraestrutura? Neste episódio, recebemos Eduardo Lima, Arquiteto de Software, e Luiz Maia, Engenheiro DevOps, ambos da dti digital. Eles falam sobre as boas práticas de Terraform para tornar o trabalho mais prático e seguro. Dê o play e ouça agora!
Quer enviar uma dúvida ou ideia para o Entre Chaves? Mande uma mensagem para o nosso Linkedin ou pelo email entrechaves@dtidigital.com.br. Sua resposta pode aparecer em um dos nossos episódios!