no vídeo de hoje a gente vai aprender como que a gente consegue criar a nossa pipeline terraform integrada ali com github Actions e também com aws Então olha só o que que a gente vai ver no vídeo de hoje basicamente a gente vai aprender como que a gente cria uma pipeline ali dentro do github Actions essa nossa pipeline ela vai ter suporte para múltiplos ambientes Então a gente vai poder ter um ambiente de desenvolvimento e o ambiente de produção a gente vai aprender também como configurar a conexão entre o nosso github actions e a WS
ali a gente vai est utilizando a melhor prática de segurança recomendada pela própria WS a gente também vai ver ali como que a gente consegue armazenar o state file do nosso terraform dentro de um Bucket S3 a gente vai utilizar algumas estratégias ali para evitar problema de concorrência da nossa pipeline a gente vai entender também como que a gente faz o Destroy automatizado dessa nossa infraestrutura e por fim você vai ter um projeto de exemplo aí para você poder utilizar em qualquer lugar e com isso você vai conseguir fazer o Deploy de qualquer tipo de
infra dentro da WS e o melhor de tudo é que você vai est utilizando a melhor prática de mercado ali com uma pipeline totalmente Redonda fazendo com que você faça Deploy tanto no ambiente de Dev quanto no ambiente de produção então eu recomendo que você fique até o final que esse vídeo aqui tá bem valioso Então bora lá para esse vídeo de hoje aqui a gente tem uma lista de tarefas mas a gente vai fazendo aqui um passo de cada vez pra gente não se embolar pra gente começar o vídeo aqui vamos entender o que
que a gente de fato vai estruturar nessa Nossa pipeline então vamos lá como que vai funcionar essa nossa pipeline terraform né essa imagem aqui ela ilustra bastante como que isso aqui vai funcionar por debaixo dos panos Então dentro do nosso github repository a gente costuma ter ali sempre duas Brains a Branch develop e a Branch m a gente vai segregar esses nossos dois ambientes ali de Deploy digamos assim entre essas duas nossas Branch sempre quando a gente tiver um código mergado digamos assim pra Branch de develop a gente vai pegar todo o código terraform daquela
Branch e a gente vai fazer o Deploy aqui numa estrutura de desenvolvimento vamos supor que a gente fez esse Deploy tá tudo certinho e agora a gente quer fazer essa implantação no ambiente de produção para isso a gente vai fazer o merge da Branch de develop para bran m e com isso a gente vai trigar uma outra pipeline que vai fazer todo esse Deploy dessa infraestrutura no ambiente de produção O legal aqui é que a gente vai conseguir utilizar parametrização pra gente poder ter config diferente entre ambientes de desenvolvimento e ambientes de produção Então vamos
supor que você queira fazer o Deploy de uma E2 para poder fazer implantação da sua aplicação Spring boot por exemplo no ambiente de desenvolvimento você vai conseguir configurar para ter uma Instância pequena para gerar menos custos e pro ambiente de produção quando você fizer o merge ali na Main você teria uma máquina bem mais robusta para poder suportar né a quantidade de acessos ali no ambiente de produção Então beleza Qual vai ser o workflow aqui da nossa pipeline esse diagrama aqui exemplifica bem mas a gente vai vendo aqui como que vai funcionar primeiro passo ali
quando a gente fizer um merge e trigar o nosso github Actions ele vai precisar fazer um clone do nosso repository então ele vai no seu primeiro step fazer o clone ali de todo o seu projeto no segundo passo para ele poder executar ali os comandos terraform e dentro da WS a gente vai precisar configurar as linhas de comando tanto da WS quanto do do terraform depois de configurar a gente vai precisar fazer uma conexão entre o github Actions e a nossa conta WS para isso a gente vai fazer uma configuração via assum hole mais à
frente no vídeo a gente vai entender o que que é isso mas é uma forma bem segura ali da gente configurar a nossa pipeline para ela poder ter uma conexão com a nossa conta WS sem precisar deixar Fixa aqui algumas credenciais depois disso aqui a nossa pipeline vai adquirir ali um Lock de execução para não permitir ali problemas de execuções paralelas a gente também vai entender mais à frente o que que seria isso aqui depois disso ele vai executar ali o terraform plan e o apply e por fim ele vai armazenar ali ou atualizar o
state file dentro de um s3 Bucket então com essa estrutura aqui que a gente vai montar no vídeo de hoje você vai conseguir fazer o Deploy de qualquer tipo de infraestrutura terraform dentro daws então sem mais enrolações vamos pra prática aqui vamos ver de fato como é que esse projeto vai funcionar então primeira coisa que a gente vai ter que fazer eu vou voltar aqui paraa nossa lista de tarefas e marcar que a gente já concluiu a nossaa introdução que a gente já entendeu como a Pipe vai funcionar o nosso segundo passo aqui é fazer
o setup do nosso projeto então eu vou criar um repositório ali dentro do github então eu venho aqui dentro do meu github eu vou apertar aqui em cima em repositories eu vou apertar em new e eu vou criar um novo repositório aqui indicando por exemplo terraform infra pipeline eu vou deixar como Public mesmo não tem problema e eu vou criar esse repositório depois de criar esse repositório aqui eu vou fazer um Git Clone aqui dentro do meu computador e eu eu vou abrir isso aqui dentro ali do intelij Então faz a mesma coisa aí que
eu já volto aqui então beleza eu já tô com o projeto aberto aqui dentro do meu intelij vamos começar aqui a configurar o nosso código terraforma então primeira coisa que eu vou fazer aqui vai ser criar uma pasta num diretório que eu vou chamar aqui de infra e dentro dessa parasta de infra vai ser onde eu vou colocar todo o meu código terraform Então a primeira coisa que a gente vai fazer aqui no vídeo de hoje é criar um Bucket S3 ali entre dois ambientes então só para exemplificar né eu vou criar um Bucket probent
de desenvolvimento e eu vou criar um outro Bucket pro ambiente ali de produção eu tô fazendo um exemplo aqui com Bucket porque é algo mais simples mas você consegue fazer isso aqui com qualquer tipo de infra você pode criar um egit e um eeks um ecs fica à vontade é só utilizar de fato o terraform que você vai est bem ali para fazer qualquer coisa então vamos criar aqui o nosso main.tf e aqui dentro deixa só mudar para TF né falta o Ezinho aqui então aqui dentro eu vou criar um recurso que vai ser a
WS S3 Bucket eu vou chamar aqui de Bucket e o name dele ou melhor o Bucket né ele vai vir através ali de uma variável Então vou criar uma variável aqui chamada Bucket name e eu vou criar um arquivo chamado variables.tf esse arquivo de variables Aqui é onde a gente define ali as nossas variáveis então eu vou definir aqui uma variável chamada Bucket name o tipo dela né eu vou colocar como string e beleza a gente já tem o nosso main.tf que vai fazer a criação ali do Bucket e a gente já tem aqui o
variables dentro do terraform como a gente vai est utilizando ali a nuvem aws eu vou criar mais um arquivo aqui chamado provider.tf e eu vou definir aqui um provider Então vai ser provider aws a região vou deixar como sa East One essa região aqui é a região aqui de São Paulo Então ela fica mais próxima aqui pra gente criar os nossos recursos então depois da gente criar o nosso provider a gente precisa criar mais uma configuração dentro do terraform ele funciona com configurações de backend quando a gente não define uma configuração de backend ali pro
terraform quando a gente Executa os comandos de terraform plan e o apply ele vai utilizar o state file na raiz aqui do projeto então ele vai estar gerando esses arquivos aqui dentro dessa pasta pra gente como a gente vai querer que esse código ele Rode dentro da nossa pipeline dentro do github Actions a gente não pode deixar esses arquivos dentro da própria pipeline como esses arquivos eles são bem importantes a gente precisa armazenar eles num local seguro onde que a gente consig reaproveitar eles a cada execução da nossa pipeline então pra gente indicar pro terraform
que ele vai utilizar por exemplo o Bucket S3 ali da WS como um lugar seguro para poder armazenar esse state file A gente vai criar mais um arquivo aqui chamado backend.tf onde a gente vai indicar aqui a terraform backend e eu coloco aqui S3 quando você tá configurando isso aqui você precisa passar mais configurações como por exemplo Qual é o nome do Bucket Qual é região ali da WS que a gente vai configurar isso tudo mas isso aqui a gente vai fazer em tempo de pipeline eu não vou deixar aqui dentro do nosso projeto então
basta a gente indicar que a gente vai estar utilizando o S3 e beleza depois mais à frente a gente vai configurar isso tudo então beleza nesse nosso main.tf aqui a gente tá indicando que a gente vai criar um Bucket e o nome do Bucket ele tá vindo aqui através de uma variável pra gente definir como a gente vai ter ali dois ambientes eu vou criar uma pasta aqui na nossa raiz que eu vou chamar de aims que vão ser os ambientes né eu vou criar mais duas pastas o ambiente de desenvolvimento e eu vou criar
mais uma pasta aqui o ambiente de produção se você quiser criar mais do que dois ambientes três quatro fica à vontade a pipeline ela vai estar totalmente preparada para poder fazer isso também então dentro dessas pastas aqui eu vou criar mais um arquivo que eu vou chamar de terraform TF vars esse arquivo aqui é um arquivo que vai armazenar todos os valores ali das variáveis Então como a gente criou a variável Bucket name aqui o terraform TF vs do ambiente de Dev vai setar o nome do name do ambiente de Dev então poderia colocar aqui
por exemplo Dev sa is1 build Run video pipeline por exemplo então ele vai criar um Bucket no ambiente de Dev com Bucket com esse nome para o ambiente de produção a gente pode copiar esse mesmo arquivo e colar na pasta aqui de prod e eu vou trocar o começo desse nome aqui para prod então no final aqui das contas a gente vai ter dois buckets um prente de Dev e o outro prente de prod e a gente vai conseguir diferenciar isso pelo Buck Bucket name aqui que a gente vai est criando Então beleza esse nosso
código terraform aqui ele já tá concluído ele é um código simples mas ele tá bem funcional aqui então ele vai criar um Bucket S3 variando ali dependendo do ambiente ele vai utilizar um nome ou outro nome ali para esse Bucket Então vamos voltar lá pra nossa lista de tarefas pra gente ver qual o próximo passo a passo né que a gente vai precisar fazer então a gente já criou o nosso repositório e a gente também já fez ali o código terraform que vai criar esses nossos dois buckets o próximo item que a gente tem aqui
é configurar a nossa conta aws Então como a gente viu naquele nosso desenho né a gente vai precisar comunicar com github Actions com a nossa conta WS e pra gente fazer essa configuração aqui essa comunicação de uma forma segura a gente vai precisar fazer uma sequência aqui de steps então se você pesquisar como que você consegue fazer isso a própria WS tem um artigo onde eles indicam ali de como que a gente consegue conectar o nosso github actions com a nossa conta WS então basicamente eu vou simplificar esse artigo aqui para você e eu já
vou mostrar aqui como que você cons consegue fazer essa configuração então pra gente poder configurar que que a gente vai precisar fazer Primeiramente você entra dentro da sua conta WS e você vai dentro do serviço ali do Iam a gente vai est configurando aqui um identity provider Então essa comunicação entre o github e a nossa conta WS vai ser ali através do Open identity então pra gente poder fazer isso a gente precisa adicionar aqui o github como um provedor ali de identidade então assim que você entrar você marca aqui como Open ID Connect na hora
de de criar esse identity provider e aqui no provider URL a gente vai colocar esse seguinte valor se a gente for aqui na documentação da WS ele dar um exemplo de qual é o valor que a gente precisa colocar que é basicamente esse aqui eu vou deixar esses links aqui na descrição para você também poder fazer esse cont contrl ctrl v Fica tranquilo então a gente volta aqui dentro da WS e a gente coloca no provider URL esse link aqui que é basicamente algo ali do github depois da gente configurar isso aqui a gente precisa
setar também ali o campo auds esse campo a gente vai setar a URL do STS então a gente copia aqui também da documentação da WS e a gente coloca aqui embaixo em auds depois isso aqui basicamente o nosso identity provider aqui ele tá configurado o próprio github né e basta a gente apertar em Ed provider depois que você fizer isso a gente já vai ter aqui tudo configurado tudo certinho agora que a gente já tem um identity provider ali criado você pode apertar aqui para entrar dentro desse identi provider e a gente vai apertar aqui
em cima em r a gente vai est criando aqui uma hole onde a nossa pipeline no momento que ela for executar ela vai chamar WS e ela vai passar algumas informações a WS vai identificar que é uma pipeline segura e com isso vai dar essas permissões de acesso para essa pipeline então aqui dentro você pode apertar em Create a new rle e aperta aqui em next depois disso aqui você deixa marcado como web identity tá tudo certo aqui o audience você vai mudar para STS então o ident provider ele fica aquele que a gente criou
no step anterior aqui ele vai dar mais algumas informações sendo que a gente tem dois Campos como opcionais e um campo aqui como obrigatório esse github organization ele é o campo obrigatório ali para poder indicar onde que a nossa pipeline tá rodando pra WS poder confiar que ela pode acessar os seus recursos então por exemplo a gente configurou o github como um iden provider ali seguro a gente não quer permitir que todo mundo dentro do github tem acesso à nossa conta WS a gente só quer permitir as pipelines que rodando dentro da nossa conta então
essa configuração aqui a gente tá dizendo Exatamente isso então em github organization você vai setar o teu nome do github então basicamente se você for dentro do teu github depois aqui do github.com tem o seu nome de usuário é esse nome que você vai copiar e você vai colocar aqui dentro desse github organization se você tem uma organização também criada dentro do github vai funcionar da mesma forma tu copia o nome da organização e coloca aqui dessa forma a gente tá indicando que que todas as pipelines dentro dessa organização ou dentro dessa conta tem permissão
de acessar a nossa conta WS se você acha que essa configuração ela é muito aberta ou seja dá possibilidades ali para outras pessoas mexerem no que não deve você também consegue setar qual repositório dentro dessa conta tem a permissão aqui pra WS então por exemplo você poderia pegar o nome do teu repositório aqui e setar ali também que iria funcionar numa boa no meu caso eu vou deixar como github organization somente Porque para mim aqui tá tranquilo Se você se quiser mudar fica à vontade depois disso aqui então você aperta em next e ele vai
fazer a criação ali da nossa hole para poder criar a nossa hole a gente precisa definir Quais são as permissões de acesso que a nossa pipeline teria dentro da nossa conta WS aqui é importante mencionar que você tem que levar em consideração o privilégio mínimo então você não dá evita na real dá o acesso de administrador pra sua pipeline somente dá acesso ali pros recursos que ela vai de fato alterar no meu caso aqui vai ser referente ao recurso do amazon S3 então eu seleciono esse Amazon S3 full access eu também vou colocar aqui o
dam DB Então vou colocar o dam DB full access também como permissão aqui para essa minha Hold Fica tranquilo Se tu precisar incluir mais permissões no futuro dá para vir aqui editar é tudo tranquilo então depois de colocar essas duas permissões ali pra nossa ho a gente aperta em next e a gente vai definir aqui agora o nome dessa hole Então vou colocar Git Hub actions Bruno GR que é o nome do meu perfil ali no github p Line então aqui com esse nome definido basicamente que que a WS gerou aqui pra gente ela gerou
um arquivo de trust que a gente vai entender ele aqui bem rapidinho esse nosso arquivo de trust aqui a gente tá deixando permitida uma Action de assum hole Ou seja a gente tá deixando github assumir uma hole dentro da nossa conta WS somente se bater determinadas condições e nessas condicionais a gente tá indicando tudo que tiver dentro ali da minha conta que tem o meu usuário Bruno grana então é aqui que tá setado AL ali o permissionamento que o github a nossa pipeline só vai poder acessar essa conta WS se for referente a esse repositório
que tá dentro do meu usuário se um outro usuário tentar usar essa hole não vai conseguir porque isso aqui vai bloquear o acesso Então beleza esse aqui é o nosso trust policy a gente tem ali as nossas permissões e por fim a gente pode mandar aqui um Create hole para ele criar a nossa hole então basicamente a gente já tem a nossa hole criada aqui que é esse Git Hub actions Bruno grana pipeline então vamos voltar pra lista de tarefas pra gente marcar aqui que a gente a gente já configurou uma hole né para ser
usada na nossa pipeline o segundo passo é que a nossa pipeline ela vai precisar armazenar alguns state files no Bucket S3 para isso é interessante que a gente faça a criação desse Bucket manualmente Então vamos abrir aqui o nosso serviço do S3 Bucket e então você entra na sua conta WS pesquisa aqui em cima por aws S3 e a gente vai criar um novo Bucket então no nome do Bucket aqui o que eu gosto de colocar é o nome da minha conta ali que eu tô usando na pipeline depois a região S1 e depois você
pode colocar qualquer nome aqui eu vou colocar por exemplo terraform state file depois de setar aqui o Bucket name a gente pode abaixar mais um pouco e habilitar o versionamento aqui pra gente ter um versionamento ali dos nossos state files caso D algum problema a gente consegue voltar atrás e por fim a gente pode apertar aqui em Create Bucket então a gente já tem aqui o nosso Bucket criado Vamos agora pro nosso último passe o nosso último passo ali se a gente voltar na lista de tarefas a gente pode marcar como concluída o próximo passo
seria criar uma tabela no dar DB que vai fazer o lock ali pra gente evitar alguns problemas que a gente vai entender mais à frente então pra gente poder fazer a criação dessa tabela no Dynamo basicamente a gente abre aqui o nosso github a gente pesquisa aqui pelo serviço do Dynamo DB Assim que abrir a gente vem em tables e a gente vai fazer a criação de uma nova tabela então vou seguir o mesmo padrão eu vou colocar o meu nome de usuário traço sa e One terraform Lock Então esse aqui vai é o nome
da minha tabela e em partition aqui o nome bem importante que a gente precisa setar aqui que é o que o terraform olha ali por debaixo dos panos é lock ID Então escreve Lock ID exatamente nesse Case aqui com o ID maiúsculo para poder dar certo se mudar ali eu já fiz dá algum problema então já escreve dessa forma aqui para dar tudo certo então depois de setar isso aqui o nome e o partition Key Você pode abaixar não precisa customizar mais nada só se você saber ali o que você tá fazendo de fato e
por fim pode apertar aqui em create T então basicamente o nosso setup de criar o Bucket o acesso à conta e a nossa tabela aqui no D DB já tá concluída então a gente pode marcar aqui que a gente já finalizou um ponto interessante que a gente pode entender com essa configuração manual que a gente fez aqui agora é que ela só precisa ser feita uma única vez para cada conta aws Então nesse nosso caso eu acabei de configurar essa conta com isso eu vou poder criar várias pipelines sem precisar repetir todo esse processo aqui
Manual eu só precisaria repetir isso aqui se eu tivesse criando em uma nova conta WS como eu vou est criando os recursos futuramente aqui dentro dessa mesma conta eu não preciso mais repetir esse nosso step a gente basicamente iria clonar um repositório ali base e a gente reaproveitar toda essa lógica então isso aqui é um step manual mas ele compensa bastante porque só é feito uma vez Então bora lá Bora seguir o próximo passo que a gente tem aqui é criar de fato o nosso Action dentro do github ali para poder utilizar o terraform então
para isso a gente vai fazer o seguinte step aqui dentro do nosso projeto a gente vamos criar aqui mais uma Branch só pra gente poder testar eu vou criar mais uma Branch aqui ou melhor né eu vou comitar eu vou criar um arquivo chamado readme.md e eu vou fazer um commit desse cara somente aqui na nossa Branch M pra gente poder depois testar esses múltiplos ambientes Então vou comitar aqui initial commit então eu tô commitando só esse arquivo aqui na nossa Branch Main e eu vou dar um commit and Push aqui então eu tô publicando
isso tudo aqui somente para essa bran M depois de eu fazer esse commit a gente pode vir aqui em cima e fazer o checkout para uma nova Branch que eu vou chamar de develop então é dentro dessa Branch aqui que a gente vai começar a escrever o nosso código pra gente poder testar essa pipeline então só vou criar mais um arquivo aqui eu vou criar um Git Ignore só para ficar mais limpo ali Git Ignore e eu vou botar aqui dentro o arquivo do intelij eu também vou colocar o ponto terraform aqui para ele não
comitar nada do terraform ali pro Nosso Rap pra gente poder configurar aqui o workflow do terraform dentro do github Actions a gente vai criar uma pasta na raiz do projeto chamado ponto github e eu vou criar aqui dentro mais um arquivo chamado workflows arquivo não diretório Então a gente vai ter aqui um pon github workflows E aí agora sim eu vou criar um arquivo chamado terraform pimo esse arquivo aqui ele vai ser a configuração da nossa pipeline terraform Bora lá então na definição desse arquivo a gente coloca um name aqui em cima eu vou deixar
como terraform workflow Isso aqui vai ser um arquivo reutilizável tá a gente vai utilizar para cada ambiente aqui embaixo a gente vai setar um workflow Call e aqui dentro a gente consegue definir os inputs que a gente vai receber dentro desse nosso arquivo que é reaproveitável então aqui como a gente tinha visto ali na lista de tarefas a gente vai precisar receber alguns inputs ali como variáveis então o primeiro que eu vou definir aqui vai ser o environment Então quem Chamar esse workflow vai precisar passar isso então eu coloco o Type como string e aqui
eu deixo o required como true e aqui embaixo eu vou setar já outro parâmetro é basicamente o aws assume hole arn que é aquela hole que a gente criou como a gente tá deixando aqui um arquivo agnóstico né a gente vai deixar tudo parametrizável então aqui dentro eu posso colocar como Type string required true o próximo item que a gente precisa é o aws S3 Bucket state file ou melhor vou até mudar ordem aqui vou colocar WS state file S3 Bucket eu vou deixar então como type string required como true e por fim aqui a
gente vai precisar receber o nome da tabela ali que a gente vai fazer o lock Então vai ser a WS aqui vai ser Lock dam DB table Então vai ser um Type string e um required aqui também como true então aqui a gente tá definindo todos os inputs aqui que esse nosso workflow vai receber depois disso aqui a gente precisa definir os Jobs né que que a nossa pipeline vai executar aqui dentro do github actions Então vamos voltar ali para de tarefas pra gente poder marcar que a gente já configurou os inputs ali do nosso
workflow agora a gente precisa configurar o setup ali do nosso workflow então basicamente a gente vai precisar clonar o repositório configurar ali a wsc e também configurar a linha de comando ali do terraform Então como que a gente vai fazer isso aqui dentro do projeto eu vou voltar aqui eu vou definir como terraform e aqui eu vou colocar uma colinha do que que a gente vai fazer por debaixo dos panos Então deixa eu só dar uma entada aqui que que a gente tá fazendo com essa colinha que eu acabei de colocar aqui basicamente a gente
tá indicando que esse nosso step ele vai precisar rodar numa máquina que tem um sistema operacional ali como o bunto depois disso a gente tá configurando que todos os comandos que a gente vai rodar ali dentro do nosso Runner Eles vão utilizar ali o BH como a linha de comando então esses dois itens aqui é uma configuração de como que o nosso Runner ali do github ele vai ser de fato setado depois disso a gente tem aqui a configuração dos Passos que a nossa pipeline vai precisar seguir como a gente viu no começo do vídeo
a gente precisaria iia fazer o clone do nosso projeto depois a gente precisaria configurar awsc E também o terraform c pra gente não precisar fazer isso na unha digamos assim escrevendo ali o comando de instalação o próprio github Actions ele tem algumas Actions aqui que a gente consegue reusar que já são até Actions oficiais Então essa Action aqui de checkout basicamente ele vai fazer o processo ali de Git clone do nosso projeto e Vai disponibilizar aqui pra gente utilizar essa Action aqui de baixo ela tá fazendo a mesma coisa só aqui configurando ali o nosso
terraform cai e aqui a gente tá indicando qual é a versão do terraform que a gente vai querer utilizar e essa por última aqui a gente tá configurando as credenciais da WS nessas configurações aqui é interessante a gente perceber esse campinho aqui Roll to assume alguns vídeos que eu vejo pela internet do pessoal configurando as credenciais da WS dentro de um github actions é através de Secret porém através de Secrets é algo bem chato de manter o que a gente tá fazendo aqui é através de assum hole no começo do vídeo a gente fez aquela
criação da nossa hole e a gente tá recebendo ela aqui como parâmetro bem no começo desse arquivo então aqui embaixo pra gente poder referenciar Esse parâmetro que a gente tá recebendo a gente utiliza esse padrão aqui de inputs ponto e a gente vai colocar o mesmo nome desse parâmetro que tá vindo ali em cima Então dessa forma a gente tá indicando aqui que a gente vai utilizar aquela hole como aum hole mais abaixo a gente tem o nome da sessão você pode colocar qualquer coisa eu vou deixar esse aqui que é o padrão que vem
ali da documentação da WS e por fim a gente tem ali a região da WS que a gente tá tentando se conectar nesse nosso caso aqui a gente também tá recebendo V input que quando a gente for utilizar de fato aqui vai ser aquela sa isue One Então até perceber aqui eu acho que a gente não configurou a WS region aqui como input Então vamos fazer isso aqui agora então depois desse cara aqui eu vou colocar WS region Type string e required como true Então nesse caso aqui a gente tá recebendo como parâmetro e a
gente vai tá utilizando aqui embaixo também então beleza A gente já fez o setup aqui vamos voltar pra lista de tarefas pra gente poder marcar que a gente já concluiu o setup aqui do nosso workflow o próximo passo que a gente vai precisar fazer aqui é fazer o step ali do terraform init ou seja inicializar de fato ali o nosso projeto terraform dentro ali da nossa pipeline então pra gente poder fazer a configuração ali do step do terraform nit a gente vai voltar aqui dentro e a gente vai criar mais um step aqui embaixo e
a gente vai colocar essa colinha aqui então que que faz esse step aqui do terraform init o primeiro comando que ele executa aqui é esse CD infra para ele poder entrar dentro da nossa pasta aqui de infra então depois disso aqui ele tá rodando todos os comandos dentro daquele diretório depois disso ele rota o comando do terraform nit e ele passa algumas configurações aqui de backend como a gente viu no começo do vídeo aqui dentro do nosso da nossa pasta de infra a gente tem esse arquivo backend.tf dentro desse arquivo a gente indicou que a
gente iria utilizar o S3 como backend ali pro nosso state file e agora dentro da pipeline a gente tá passando as configurações Desse nosso backend então aqui a gente tá setando qual vai ser o nome do Bucket que a gente vai precisar armazenar esse nosso state file então ele tá pegando aqui através dos inputs que a gente vai receber no topo ali desse arquivo então aqui em cima se a gente olhar a gente tá recebendo o state file S3 Bucket então Exatamente esse input que a gente tá referenciando aqui embaixo depois disso a gente tem
aqui o q que é basicamente a chave Desse nosso backend então aqui a gente tá utilizando o nome do nosso repositório então a gente consegue através do Actions utilizar alguns atalhos né E aqui esse github event repository name ele traz o nome do nosso repositório e a gente coloca ele como chave aqui do nosso backend o próximo item de configuração é a região então a gente tá passando também a região que tá vindo V input e por fim a gente tá passando ali o darum DB table pro terraform poder fazer o lock ali e não
permitir né alterações concorrente então com isso aqui a gente inicializa ali o nosso terraform Então bora voltar pra lista de tarefas pra gente poder que a gente já configurou e entendeu aqui o step do terraform init o próximo passo que a gente precisa fazer aqui é o terraform validate o terraform validate ele basicamente vai validar se tem algum problema de sintasse ali dentro do nosso código terraform Então nesse nosso caso aqui a gente vai rodar um Run terraform validate então ele vai validar se tá tudo certinho ali dentro do nosso arquivo Então vamos voltar para
de tarefas pra gente poder marcar que ele já concluiu e o próximo passo que a gente tem para fazer aqui é fazer o terraform Play para depois a gente poder fazer o apply então o nosso próximo passo aqui é fazer o terraform plan Então como que a gente vai fazer essa configuração esse aqui é o passo que é mais verboso mas a gente vai entender de fato aqui o que que ele tá fazendo então essa etapa aqui do terrafarm plane é onde ele vai fazer todo planejamento do que que ele vai criar ali na WS
a partir do nosso código terraform então aqui a gente tá definindo o seu nome como terraform plan e o seu ID como terraform traço plane a gente tá entrando dentro da nossa pasta de infra que é onde de fato fica ali o nosso código terraform e ali dentro a gente tá utilizando um conceito bem interessante que o terraform tem que é o conceito de workspace o terraform ele consegue ter segregação de workspace se você der uma olhada na documentação deles workspaces a gente consegue ter state filos diferentes para cada workspace a gente consegue entender aqui
o workspace como se fosse ali os nossos ambientes de Deploy então a gente teria ali um workspace pro ambiente de desenvolvimento e a gente teria um workspace ali pro ambiente de produção para o workspace a gente não tem limite a gente consegue ir criando diversos workspaces e cada workspace Ali vai ter um state file diferente então caso você queira utilizar o workspace que é o que a gente vai estar fazendo aqui nesse vídeo A gente precisa selecionar esse workspace antes de rodar os comandos ali de plan e de apply então basicamente pra gente selecionar um
workspace a gente roda o comando aqui terraform workspace select e a gente passa ali o nome do nosso workspace nesse nosso caso aqui como o nome do workspace é o mesmo nome do ambiente a gente vai est pegando ali através do input Então esse input aqui ele vem ali do começo do nosso arquivo que quem vai estar reutilizando vai passar e com isso a gente vai est criando ou selecionando esse workspace Então qual é a lógica que a gente tá fazendo aqui a gente tenta selecionar o workspace caso ele não exista né o terraform vai
falhar e ele vai executar esse seguinte comando nesse comando aqui que ele executa em caso de falha a gente vai est criando esse workspace então na primeira execução Ele vai tentar se selecionar se não existir ele vai estar fazendo a criação e selecionando automaticamente esse workspace então depois da gente setar ali o workspace que a gente vai querer trabalhar a gente tá concatenando aqui mais um comando que é o comando do terraform plane que é o comando que a gente vai de fato planejar o que que a gente vai fazer Esse comando de terraform play
aqui a gente tá passando o arquivo de variáveis que a gente vai estar utilizando então aqui Se você prestar atenção a gente tá apontando ali para aquela pasta barra envis que é onde a gente definiu as variáveis ambiente para cada ambiente então barra in aqui ele tá pegando um input de forma dinâmica e depois ele tá pegando o terraform TF vars Então dessa forma aqui ele tá indicando que esse plan ele vai ter que utilizar esse arquivo aqui como variável de preenchimento depois que ele faz isso por fim ele seta aqui qual vai ser o
nosso output desse terraform PL ele vai gerar um arquivo chamado ambiente P plane então por exemplo seria Dev PPL ou até mesmo prod PPL então aqui a gente configurou todo o nosso step do terraform Play Então bora voltar lá paraas tarefas pra gente poder marcar como concluída a configuração aqui do step do terraform plan o próximo step que a gente vai fazer aqui é o terraform apply então o step do terraform apply aqui ele vai ser bem parecido ali da lógica do plan Então como que a gente vai fazer eu vou vir aqui vou quebrar
mais uma linha e vou colocar aqui a nossa colinha basicamente a gente tá executando o comando terraf apply então o name ali vai ser terraf apply o ID do nosso Job né do nosso step é terra apply e quais serão os comandos ali que a gente vai executar primeiro a gente vai entrar dentro da nossa pasta infra que é onde contém ali o código terraform depois a gente vai selecionar ou criar um workspace a mesma lógica que a gente fez ali em cima e por fim a gente vai executar o comando aqui de terraform apply
passando o nome do arquivo de plane que foi feito no step anterior então no step anterior no terraform PL aqui a gente gerou esse output que foi um arquivo com todo o planejamento do que que a gente precisa fazer pra gente reaproveitar esse mesmo arquivo e fazer a o apply ali dentro da WS a gente vai est utilizando esse arquivo dentro do nosso terraform apply então ficaria terraform apply Dev PPL ou até mesmo terraform apply prod PPL Então dessa forma aqui a gente vai estar gerando o planejamento e depois já aplicando ali dentro da WS
Então beleza pra gente já testar isso aqui vamos voltar pra nossa lista de tarefas pra gente poder marcar que a gente concluiu o step do terraform apply e agora a gente vai configurar Nossa Pipe prent de Dev para já ver ela rodando aqui na PR prática pra gente configurar a pipeline ali pro ambiente de Dev que que a gente vai precisar fazer a gente volta aqui dentro do projeto eu vou fechar tudo aqui e dentro dessa pasta aqui de workflows a gente vai criar mais um chamado agora develop pemo esse workflow aqui a gente pode
botar o name como Dev Deploy e aqui dentro a gente vai definir os seus Jobs que vão ser os passos ali que esse workflow vai precisar fazer então antes da gente configurar os steps aqui que o nosso workflow vai precisar executar a gente precisa indicar quando que esse workflow vai ser inicializado então a gente utiliza aqui a palavra on depois a gente quebra uma linha push e eu vou indicar aqui o nome da Branch como a gente tá fazendo para ambiente de desenvolvimento eu tô indicando o nome da Branch develop dessa forma aqui em caso
de push para brin develop ele vai trigar esses nossos Jobs então depois disso agora sim a gente pode definir o nosso step ali do terraform Então vou colocar aqui o nome como terraform e eu vou est utilizando através dessa palavrinha uses o workflow que já foi criado ali naquele nosso outro arquivo então eu vou referenciar ele através de ponto github bar workflows bar terraform pamo dessa forma eu vou est utilizando todo esse código aqui de uma forma reutilizada então voltando aqui agora a gente pode passar os seus parâmetros então através desse Campo aqui Wi a
gente consegue passar todos aqueles parâmetros que esse workflow aqui precisa Então seria ali o environment eu vou deixar aqui como deve eu vou pegar agora aum r arn vou deixar aqui por enquanto como uma string vazia depois eu preciso do aws region eu vou colocar aqui como sa e One o próximo passo é o aws state file S3 Bucket que eu vou deixar como string vazia por enquanto e também ali o nosso dynam DB o lock né então vou deixar isso aqui como string vazia agora eu vou preencher todas essas Strings aqui através daqueles recursos
que a gente criou no começo do vídeo Então vou vir aqui na WS então vou abrir aqui meu navegador vou vir aqui dentro da WS e eu vou pegar por exemplo primeiro o nome da nossa tabela Então vou copiar esse name aqui e eu coloco aqui embaixo o próximo passo é pegar o nome do nosso Bucket S3 Então o meu Bucket era esse aqui então aqui eu tô copiando o nome do meu Bucket eu vou colocar aqui também então o próximo passo aqui é pegar a nossa hole Então vou vir aqui dentro da WS eu
vou dentro da aba de iam eu aperto aqui em hols e eu vou pesquisar pela nossa hole lá do github actions assim que eu entrar eu vou copiar esse arn aqui então eu aperto aqui para ele poder copiar e eu já coloco aqui dentro do nosso workflow antes da gente rodar como a gente vai est fazendo um assum hole dentro desse workflow a gente precisa seguir a recomendação ali da WS na documentação deles quando eles indicam né que a gente vai rodar esse Action aqui dentro do nosso github a gente precisa colocar essa permissão então
aqui dentro eu vou copiar essa permissão aqui para ele poder fazer né o assum roll ali dentro da w s e eu vou colocar aqui embaixo antes de Jobs Então vou até tirar esses comentários aqui mas basicamente isso aqui é requerido pra gente poder fazer o assum rle Então beleza com isso aqui configurado eu vou agora fazer um commit vou deixar comichar o commit aqui só pra gente poder testar e a gente vai ver aqui se ele vai conseguir fazer a criação desses recursos ali dentro da WS então eu dei um commit aqui e vamos
ver que que vai acontecer a primeira coisa eu vou ir lá dentro do nosso github né então eu vou dar um refresh aqui no nosso repositório eu vou apertar aqui em Actions aqui vai aparecer todo o nosso workflow do que que tá sendo executado então ele já começou a executar aqui o nosso workflow do terraform então aqui ele tá fazendo todo aquele passo a passo que a gente configurou dentro daquele arquivo Então se a gente perceber aqui ele já fez um configura WS credentials então ele fez um assume hole ali todo certinho com aquela hole
que a gente definiu ele já deu um terraform nich ele tá fazendo terraform PL aqui então ele tentou selecionar aqui o workspace Dev mas como não existia ele fez a criação então ele conseguiu Criar e trocar pro nosso workspace ali do mente de desenvolvimento ele já tem o nosso plan aqui do que que ele vai criar nessa nossa execução e mais abaixo ele faz ali o terraform apply utilizando o plan que foi feito aqui anteriormente então parece que o nosso terraform apply ele também Funcionou aqui a gente já tem todo o log né que ele
tava criando o nosso Bucket e ele já finalizou a criação e se a gente for dentro da WS que que a gente vai começar a perceber né eu vou vir aqui na nossa lista de Bucket eu vou apertar em Bucket e eu vou dar um refresh aqui dentro se eu selecionar por Dev aqui eu já consigo ver que o nosso Bucket que foi criado via pipeline ele realmente existe outra coisa que é bem interessante a gente entender como que funciona É que como a gente viu no começo do vídeo vou até voltar ali para aquele
nosso diagrama quando a gente roda ali a pipeline esse é o step que ele precisou fazer primeiramente ele configurou ali as nossas Calis tanto WS como terraform ele fez o assum hole e O interessante é que ele adquiriu o lock dentro do Dynamo e ele também armazenou o state file dentro do S3 Bucket além de criar os nossos recursos pra gente ver que isso aqui realmente foi aplicado eu consigo vir na WS e eu entro naquele nosso Bucket que a gente configurou dentro do nosso workflow então por exemplo dentro do nosso projeto a gente configurou
esse Bucket aqui então eu vou copiar o nome desse Bucket eu vou pesquisar aqui e eu vou entrar dentro dele assim que eu entrar eu já consigo ver que o terraform criou uma pasta aqui chamada Envy e ela já criou um ambiente chamado Dev aqui dentro a gente também já tem mais um arquivo que é o nome ali do nosso repositório quando eu apertar esse arquivo eu posso apertar aqui em cima em Open também eu já vou ter o acesso ao state file ali da nossa pipeline então isso aqui é o nosso terraform utilizando o
S3 como backend para poder armazenar o nosso state file outra coisa que a gente precisa ver é que a gente criou aquela tabela no Dynamo DB então o que que acontece se a gente for ver ali na nossa pipeline quando ele começou a fazer os processos aqui de cri criação e tudo mais se a gente for olhar lá dentro da nossa tabela do danimo DB eu entrar aqui na minha tabela né que eu tinha criado e eu apertar aqui em explore items eu já consigo ver ó que nessa tabela Ele criou um registro um registro
de lock para esse nosso repositório e para esse nosso ambiente que que acontece se duas pessoas fizessem um push ao mesmo tempo ali pra bran develop esse nosso Lock aqui dentro do dimo não ia permitir que as duas modificações acontecessem em paralelo ele ia fazer uma e depois ele iria fazer é outra isso vai deixar o nosso ambente ali mais saudável né em caso você tenha um time ali com várias pessoas trabalhando então o código aqui já tá top já tá suportando bastante coisa então se tu quiser ver como é que é o arquivo você
pode apertar aqui mas basicamente ele gera um hash ali a partir do nome ali do nosso projeto Então beleza vamos voltar pra nossa lista de tarefas pra gente poder marcar que a gente configurou ali o nosso ambiente de Dev e a gente já tem a criação do nosso Bucket ali no ambiente de Dev agora pra gente fazer o Deploy no ambiente de produção a gente vai reaproveitar bastante daquele código que que a gente precisa fazer eu vou voltar lá dentro do projeto esse nosso arquivo develop pemo eu vou copiar eu vou colar e eu vou
trocar para Main pemo nesse caso aqui eu vou mudar a brint para M E de resto eu só preciso mudar o ambiente aqui pra prod todo resto aqui eu não preciso alterar Então dessa forma aqui a gente vai est reaproveitando aquele mesmo código para poder fazer o Deploy no ambiente de produção Quando a gente tiver um push ali pra Bran de m Então nesse caso aqui eu vou fazer um commit Vou dar mais um commit and push aqui aqui vou acompanhar minha pipeline lá dentro do github Actions Então vou voltar aqui eu aperto em Actions
a gente vai ver que ele tá executando aqui mais uma vez né a gente pode acompanhar para ver se vai dar tudo certo então ele vai fazer todo aquele passo a passo o interessante aqui é que ele não vai tentar recriar o Bucket porque ele vai est utilizando ali o state file então ele vai ver cara esse Bucket já existe não tem nada para fazer e ele vai finalizar aqui com sucesso então a gente consegue ver aqui ó no Changes então beleza A gente já analizou aqui a nossa execução no ambiente de Dev O interessante
é que se tu perceber no log aqui ele tá até indicando que ele tá adquirindo o lock ali antes de executar Então é ele fazendo aquela interação com dyam DB aqui na prática então pra gente poder fazer o nosso Deploy no ambient de produção eu vou criar um pull request aqui da nossa Branch de develop pra nossa Branch Main Então vou dar um Create P request Create P request aqui e assim que criar eu já vou fazer aqui o merge para ele poder fazer a criação da nossa infra de produção então apertando aqui em merge
ele vai começar se a gente apertar aqui em Action executar mais um step aqui agora pra Branch de Main quando a gente entrar dentro dessa Branch aqui a gente vai ver que ele vai começar a fazer o Deploy ali do ambiente de produção Então vamos acompanhar aqui para ver se vai dar alguma coisa de errado ou se vai dar tudo certo então a gente já percebe aqui que ele viu que o workspace de prod não existia então ele faz a criação e ele troca ali pro workspace de prod Então até agora tá tudo certo no
PL ele já tá indicando que ele vai criar um Bucket ali pro ambiente de produção Então tá funcionando redondinho e agora ele vai tentar fazer o apply e parece que já funcionou tudo certinho também então dessa forma aqui se eu vi lá dentro da WS de novo e eu pesquisar pelo meu Bucket Deixa eu voltar aqui vou pesquisar pro Bucket de prod vou dar um refresh já aparece lá ó o meu Bucket de prod que eu acabei de criar então ele foi criado agorinha Então antes da gente ir pra próxima tarefa eu só vou editar
aqui o nome do nosso workflow tá como deve Deploy eu vou mudar para pro de Deploy só pra gente deixar tudo certinho então vamos voltar lá para nos tarefas pra gente entender o que que a gente vai fazer ainda nesse vídeo então a gente já configurou a nossa pipeline ali pra produção que ela já fez a criação tudo certinho mas se você atua bastante com terraform você sabe que de vez em quando a gente precisa fazer ali Destroy nesses ambientes e pra gente poder fazer um Destroy no ambiente terraform a gente precisa preparar a nossa
pipeline para isso também então pra gente poder fazer isso e eu te mostrar aqui como que a gente pode fazer que que a gente vai fazer eu volto aqui dentro do projeto dentro da nossa pasta de infra aqui eu vou criar mais um arquivo eu vou chamar de Destroy config P Jon esse arquivo vai ser basicamente um Jon onde vai ter o nome do ambiente e depois um boleano para indicar se você quer fazer o Destroy desse ambiente ou não então é Dev como false eu vou deixar aqui como prod como falil também então desse
caso aqui eu poderia rodar minha pipeline ele não iria fazer o Destroy para eu fazer o Destroy eu mudo isso aqui para true e em tese a minha pipeline deveria fazer o Destroy mas para isso acontecer que que a gente vai precisar fazer aqui eu vou ir naquele nosso workflow do terraform que ele é reusável né E a gente vai precisar incrementar mais um step aqui antes do terraform init a gente precisa ler aquele arquivo Jon que tá na raiz do projeto ali para poder saber se nessa execução eu preciso fazer o Destroy ou não
para isso eu vou colocar aqui uma colinha de um código que faz exatamente essa leitura pra gente então aqui a gente tá criando mais um step na pipeline que ele lê o Destroy configuration ali e basicamente o que que ele faz ele vai est utilizando aqui O jq que é uma linha de comando bem complexa ali mas aqui ele vai est utilizando para poder ler esse arquivo Destroy config P Jon e ele vai est fazendo um filtro através do nosso ambiente então ele vai tá capturando aquele valor que tá dentro desse nosso nome do ambiente
então por exemplo nessa nossa execução o nome do ambiente aqui é Dev então ele vai est olhando dentro desse arquivo e filtrando aqui essa chave com o bent de Dev dessa forma essa variável que ele tá atribuindo esse valor vai receber Exatamente esse valor então se for fals ela vai est como false se for true vai est ali como true depois da gente ler esse arquivo a gente tá gerando aqui um output desse nosso step então basicamente a gente tá emitindo uma saída com o valor desse nosso Destroy então basicamente ele vai dar um output
como true ou como false Então dessa forma a gente já tá lendo aquele nosso arquivo e a gente tá disponibilizando PR Nossa pipeline uma variável para indicar se é para fazer o Destroy ou não E essa variável aqui vai ser uma variável Leana chamada Destroy Então vamos voltar pra lista de tarefas pra gente marcar que a gente já configurou a leitura ali do nosso arquivo pon Jon agora a gente de fato vai configurar o step do Destroy então pra gente poder fazer o Destroy aqui a gente volta lá pro nosso arquivo de workflow e bem
depois aqui do init validate a gente vai incluir mais um step aqui que seria o terraform Destroy então aqui eu vou colocar a nossa colinha mas a gente vai entender o que que esse step ele tá fazendo basicamente a gente tá definindo o seu nome e esse step ele só vai executar se o valor da variável Destroy for igual a true então aqui a gente tá referenciando steps E qual é o nome do step então read Destroy config que é o nome desse step daqui de cima a gente tá pegando os seus outputs e a
gente tá pegando especificamente o output de name destroyed Então se esse output ele tiver o valor ali de True esse nosso step aqui ele vai ser executado se ele tiver um outro valor ele não vai ser executado Então nesse nosso caso aqui a gente tá entrando dentro da pasta de infra selecionando ali o nosso workspace e criando caso ele não exista e por fim a gente tá mandando o comando aqui de terraform Destroy passando ali tudo certinho e um al aprove no final para ele não precisar de aprovação então ele já vai executar ali a
destruição dessa nossa infra então depois que a gente configura aqui o nosso step de Destroy a gente precisa alterar esse nosso step de plan e o step de apply Porque pensa comigo se a gente faz aqui o nosso Destroy e a gente deixa o step de plan e o apply rodar de novo assim que a gente fizer o Destroy ele vai começar a criar nossa infra novamente então para esses steps aqui de plan e apply não rodarem quando tiver um Destroy ocorrendo ali na pipeline a gente precisa incluir aqui embaixo uma condicional Então a gente
vai incluir um if e a gente vai fazer que esse step Ele só tem que rodar se o Destroy ele não for igual a true então o step Destroy ele só roda quando ele tiver como true e esses aqui eles vão rodar quando não tiver igual a true Ou seja quando não for um Destroy Então vou colocar esse if aqui nessa nesses dois steps e basicamente a nossa pipeline estaria configurada aqui suportando Destroy Então vamos voltar para listas tarefas pra gente poder marcar que a gente já configurou essa step aqui do terraform Destroy e a
gente também já ajustou os steps ali de plan e apply para considerar ali o Destroy agora vamos rodar isso aqui pra gente já vê se tudo aqui funcionando eu vou dar um commit Lembrando que a gente colocou o arquivo aqui como true então em tese ele vai ter que destruir tudo ali do ambiente de Dev e depois quando a gente mergear para Main ele vai destruir ali do ambiente de produção também então assim que eu fiz o push eu já vou voltar aqui no nosso repositório pra gente acompanhar essa execução Então vou vir aqui em
Actions initial commit e a gente vai dar uma olhada aqui de como que tá esse step Então a primeira coisa que a gente já consegue ver aqui é que ele já leu o nosso Destroy configuration e ele já leu ali passando o nosso ambiente como deve então ele leu aquela propriedade do nosso Jon e ele já disponibilizou esse valor dentro da pipeline aqui embaixo a gente consegue ver que ele já tá executando o step do terraf form Destroy e ele não executou o terraform PL e ele não executou o terraform apply dessa forma aqui ele
já conseguiu finalizar a destruição ali da nossa infra Então se a gente voltar pros buckets aqui eu colocar como deve antes existir esse meu Bucket S3 dando refresh aqui ele não existe mais porque a nossa pipeline fez o Destroy pra gente poder finalizar esse vídeo aqui que tá bem longo mas acho que ele tá bem completo Vamos fazer um merge ali pra nossa bran m né pra gente poder fazer o Destroy no ambiente de produção Então vou criar um p request aqui de develop para m Então vou criar esse P request e agora vou fazer
um merge aqui assim que ele me permitir Então beleza confirme merge e vamos ver agora a sua execução para ver se ele vai conseguir fazer o Destroy ali tudo certinho então ele já mudou o nome aqui para prod Deploy Então aquela alteração que a gente fez já sortiu efeito e aqui ele vai começar a sua execução então aqui ó ele já fez a leitura do nosso Destroy configuration passando ali o ponto então ele tá lendo aquele aquela propriedade do nosso Jon e ele já vai executar aqui também o nosso terraform Destroy Então vamos ver aqui
antes existia né aquele nosso Bucket o pro ds1 e vamos ver assim que finalizar se a gente vai ter esse Bucket destruído Então beleza parece que a minha pipeline aqui passou deu tudo certinho e ele disse que ele conseguiu fazer o Destroy se eu fizer agora um refresh antes o Bucket aqui existia e agora esse Bucket ele não existe mais então era isso voltando pra lista de tarefas aqui eu vou marcar como concluído mas no vídeo de hoje a gente viu bastante coisa aqui e a gente viu bastante coisa legal então pro vídeo de hoje
era isso a gente viu bastante coisa legal aqui uma pipeline como essa aqui é uma pipeline digamos assim exemplo do que a gente tem em grandes empresas Então quando você tem diversas pessoas atuando ou até mesmo você tá atuando sozinho mas você quer ter um pouco mais de qualidade ali na sua entrega cara utilizar uma pipeline de infraestrutura automatizada como essa aqui vai aumentar bastante ali a sua produtividade e também vai dar uma senioridade a mais ali para você e pras entregues então mesmo que você trabalhe numa grande empresa M das vezes a gente não
entende como essas configurações são feitas então no vídeo de hoje a gente aprendeu o passo a passo de como que a gente consegue sair do zero numa conta WS nova e configurar totalmente ali uma pipeline terraform então espero de verdade que você tenha aproveitado e curtido esse vídeo antes de você sair comenta aqui embaixo o que que você achou desse vídeo deixa um like se inscreve no canal acompanha a gente pelas redes sociais eu fico por aqui Um grande abraço e até a próxima h