Leonardo: Olá! Eu sou o Leonardo Sartorello. Boas-vindas a este curso!
Audiodescrição: Leonardo é um homem branco de cabelo castanho curto e cacheado, barba curta castanha, e olhos azuis. Ele veste uma camisa branca e, ao fundo, há uma parede clara iluminada em lilás.
Guilherme: Olá! Eu sou o Guilherme Lima, e junto ao Leonardo, serei seu instrutor neste treinamento de infraestrutura como código.
Audiodescrição: Guilherme é um homem branco de cabelo castanho curto e liso, barba curta castanha, e olhos castanho-escuros. Ele usa óculos de armação retangular preta e veste um moletom preto. Ao fundo, uma parede clara iluminada em lilás.
Guilherme: Neste curso, vamos aprender os fundamentos de infraestrutura como código, entender quais são os problemas que essa abordagem resolve e como utilizá-la de forma prática.
Leonardo: Vamos explorar esses conceitos por meio de duas ferramentas: Terraform e Ansible. Essas são as ferramentas que usaremos para configurar e gerenciar nosso ambiente.
Guilherme: Além disso, precisaremos de um serviço de nuvem para hospedar toda essa infraestrutura. Neste treinamento, focamos na nuvem da AWS.
Leonardo: Este curso é principalmente para pessoas que estão dando seus primeiros passos em infraestrutura como código e também com as ferramentas Terraform, Ansible e a plataforma AWS de forma geral.
Guilherme: Após concluir este curso, você será capaz de criar, gerenciar e controlar sua infraestrutura, seja em ambiente de desenvolvimento ou em ambiente de produção, por meio de código de forma prática, objetiva e muito mais simples.
Leonardo: Vamos começar?
Guilherme: Vamos iniciar os nossos estudos de infraestrutura como código?
Primeiramente, vamos conhecer a história de Ana. Ana é uma estudante de tecnologia e está trabalhando no desenvolvimento de seu TCC. Um dos requisitos do TCC é disponibilizar o ambiente do projeto que ela está desenvolvendo.
Ana está muito feliz, porque tudo funciona perfeitamente em sua máquina. No entanto, quando Ana colocou seu projeto para rodar, não funcionou. Alguma coisa aconteceu e ela começou a pesquisar.
A partir das pesquisas, Ana descobriu que seu projeto precisava de algumas dependências e, por algum motivo, uma dependência não estava sendo atualizada.
Embora Ana tenha conseguido atualizar a dependência em sua máquina local, o projeto ainda não funcionava. Além disso, o projeto não funcionava no ambiente de deploy na nuvem.
Sendo assim, Ana precisou fazer um novo deploy de forma manual. Quando Ana atualizou a infraestrutura do ambiente de deploy, seu projeto finalmente funcionou.
Porém, toda vez que Ana precisar realizar uma modificação, atualização ou manutenção de código em seu TCC, ela precisará submeter um novo deploy manualmente. Isso é bastante arriscado.
A pergunta é: existe alguma forma de controlar nossa infraestrutura? Podemos controlar os módulos que precisamos? Os pacotes? O próprio ambiente, isto é, o sistema operacional em que faremos o deploy, de forma automatizada? A resposta é sim!
É possível automatizar o processo de deploy e entrega de software. Isso significa que você pode gerenciar toda a sua infraestrutura sem clicar em uma página ou executar comandos no terminal via bash, como Ana fez para atualizar seu projeto.
Conseguimos controlar toda a infraestrutura por meio de um código. Esse é um conceito chamado infraestrutura como código, que nós, juntamente com Leonardo, vamos explorar a seguir!
Guilherme: Neste vídeo, vamos entender o que é infraestrutura como código (IaC). Leonardo, o que significa essa sigla?
Leonardo: A infraestrutura como código, também chamada de IaC, é uma forma que nós temos de escrever e executar código para definir, implantar, atualizar e gerenciar a infraestrutura.
Uma característica importante do IaC é que ele pode gerenciar servidores, bancos de dados, redes, arquivos de log, configurações de aplicativos, documentação, testes automatizados, entre outras coisas, por meio de código.
Guilherme: De volta ao exemplo da Ana, ela teria total controle de todo o ambiente dela, isto é, de toda a infraestrutura necessária para controlar o ambiente em que está, tudo isso feito com código.
A Ana conseguiria definir todo o ambiente dela com código. Imaginamos que esse código terá um histórico, para saber em qual atualização estamos, qual ferramenta já foi atualizada ou não, e assim por diante. Portanto, ela conseguiria fazer o deploy, atualizar e gerenciar todos os módulos e pacotes necessários para o projeto dela.
Porém, quais ferramentas podemos utilizar para criar esse ambiente todo com código?
Leonardo: Para isso, existem algumas ferramentas. Entre elas, temos o Terraform, que permite criar, alterar e melhorar a infraestrutura de forma rápida e previsível.
Temos também o Ansible, que permite automatizar a instalação e a atualização de aplicativos dentro dos nossos servidores e também gerenciar algumas configurações, além de ferramentas de entrega contínua.
Além disso, temos outras ferramentas, como Chef e Puppet, que fazem a mesma função do Ansible, e o Crossplane, que funciona dentro do Kubernetes, também para gerenciar a infraestrutura.
Guilherme: Quando falamos de infraestrutura como código, se a Ana fizesse um script em bash com Python ou Ruby para gerenciar toda a estrutura dela, isso daria certo, Leonardo?
Leonardo: Até daria certo, mas é difícil manter isso a longo prazo, porque cada vez que criamos um script desse, cada um vai escrever de um jeito diferente.
Além disso, esses scripts dependem muito do ambiente em que são executados. Então, tentar executar esse script que criamos em outra máquina, pode ser que haja alguma diferença.
Também existe a convenção do código. Não necessariamente os scripts que criamos em bash, por exemplo, estarão escritos da mesma forma. Assim, torna-se difícil dar manutenção no futuro.
Há também a questão de atualização. Se estivermos usando a AWS e ela atualizar algum comando e precisar de outros parâmetros ou algo diferente, o nosso script precisará ser atualizado também, porque ele não estará pronto para essa atualização. As ferramentas feitas para IaC, como o Terraform, por exemplo, dão suporte a essas atualizações futuras.
Por fim, temos a questão da idempotência. O que essa palavra significa? Se executarmos várias vezes o nosso código, devemos ter certeza de que terá sempre a mesma saída, mesmo executando em uma máquina em que ele já foi executado anteriormente.
Guilherme: Então a ideia seria o seguinte: se criamos um script em Python e em bash, precisamos garantir que não estamos tentando atualizar duas vezes o mesmo pacote, para manter a infraestrutura funcionando de forma correta.
Isso seria um grande problema, e pensando nesse ponto, o Terraform seria a primeira ferramenta que a Ana usaria? Isso faz sentido, Leonardo?
Leonardo: Sim, faz bastante sentido.
Guilherme: E como ele funciona?
Leonardo: O Terraform funciona da seguinte maneira: nós escrevemos um script de configuração com uma linguagem específica do Terraform, uma linguagem simples que iremos utilizar.
Esse script será interpretado pelo Terraform e ele fará a "mágica" por trás, que na verdade não é mágica, mas sim código. Portanto, com o mesmo script, conseguimos subir a nossa infraestrutura em vários provedores. Ou seja, conseguimos subir na AWS, na Azure, no Google Cloud, entre outros.
Guilherme: Temos bastante informação. Porém, quais são de fato os benefícios efetivos de utilizar a IaC, Leonardo?
Leonardo: Os benefícios efetivos de utilizar a IaC são os seguintes: primeiro, com a infraestrutura como código, conseguimos fazer um processo de deploy automatizado. Ele é mais rápido, porque o computador faz essas etapas melhor do que uma pessoa, tornando o processo mais seguro e consistente.
Temos também o controle de versão. Conseguimos guardar essas atualizações que fazemos no código de forma simples. E, se houver algum problema, conseguimos voltar para uma versão anterior da infraestrutura, evitando problemas com o nosso aplicativo fora do ar.
Além disso, temos velocidade e segurança, pois está tudo definido em um arquivo, que é fácil de ler, não só hoje, mas no futuro também. Ele vai executar sempre da mesma forma e da forma mais otimizada possível.
Por fim, temos o reuso. Conseguimos copiar blocos de código e reutilizá-los para fazer outras partes da nossa infraestrutura, deixando todo o processo um pouco mais ágil.
Guilherme: Uma coisa que me chamou a atenção nesse ponto dos benefícios, é a parte do controle de versão. Teoricamente, teríamos um estado de como está a nossa infraestrutura na versão 1.
De repente, atualizamos um pacote ou fazemos algo, e a própria ferramenta (nesse caso, o Terraform) saberia o que mudou, o que foi alterado, semelhante a um Git da infraestrutura.
Leonardo: Exatamente, Guilherme. E nós geralmente guardamos esses arquivos em um Git.
Guilherme: Visto isso, vamos começar a criar o primeiro código para manter e gerenciar toda a nossa infraestrutura!
O curso Infraestrutura como código: preparando máquinas na AWS com Ansible e Terraform possui 119 minutos de vídeos, em um total de 37 atividades. Gostou? Conheça nossos outros cursos de Infraestrutura como Código em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.