Eu sou o Leonardo Sartorello, e vou ser seu instrutor nesse curso de Infraestrutura como código. Mas o que vamos ver durante esse curso?
Vamos dar uma olhada em Docker, principalmente em imagens e containers, para colocá-los do Cloud. Também vamos dar uma olhada em cargos e permissões, o que elas são e como podemos configurá-las. E vamos fazer tudo isso no ambiente do Beanstalk, que é o ambiente da AWS, que conseguimos colocar de forma razoavelmente rápida containers do Docker para serem executados.
Quais ferramentas vamos utilizar para poder fazer todas essas partes da nossa aplicação? Vamos utilizar o Docker para manejar as nossas imagens e colocar a nossa aplicação dentro de containers e também vamos utilizar o Terraform, tanto para criar quanto para configurar nosso ambiente do Beanstalk.
Onde vamos fazer tudo isso? Vamos fazer tudo isso na AWS, que é uma Cloud da Amazon e uma das maiores no mercado hoje em dia.
Para quem é esse curso? Esse curso é focado para aquelas pessoas que já estão estudando IAC e já fizeram o curso que está no pré-requisito desse.
Fazendo esse curso, o que vamos consegui fazer? Vamos conseguir colocar imagens do Docker no ECR, que é o repositório de containers da AWS, vamos entender e configurar corretamente o que são os cargos ou em inglês também chamado de roles, e o que são as políticas, ou as policies, que dão acesso aos nossos recursos.
E por fim, vamos fazer o deploy da nossa aplicação com o Docker no Cloud da Amazon. Ficou empolgado? Porque eu fiquei. Vamos começar?
Já trabalhamos bastante com EC2. Criamos máquinas virtuais para colocar nosso código, load balancers para distribuir a carga entre essas máquinas, e montamos uma estrutura elástica, sempre usando o Terraform para manejar nossa estrutura e o Ansible para fazer as configurações.
Lembrando que toda vez que fizermos algum tipo de atualização na nossa aplicação, temos que criar e configurar as máquinas inteiras novamente. Além disso, temos um problema de atraso na inicialização da máquina por conta da instalação de bibliotecas e programas necessários.
Sendo assim, se tivermos um aumento muito rápido de usuários, não conseguiremos acompanhar, já que pode demorar de 5 a 10 minutos para que consigamos criar e configurar nossas máquinas.
Para resolvermos esses problemas, podemos usar outra abordagem. Hoje em dia tem-se utilizado muito o Docker, onde todos os componentes do sistema já estão dentro da imagem do container. Dessa forma, você só tem que subir a máquina e executar o container. Porém, se configurarmos as máquinas EC2 manualmente para executar o Docker, acabamos entrando em um problema improdutivo.
Isso porque se torna necessário subir as máquinas, configurá-las para rodar o Docker e só então conseguiremos executar a aplicação. De acordo com a própria Amazon, que é dona da AWS, a maneira mais rápida de usarmos o Docker na AWS é através do Elastic Beanstalk, ou "pé de feijão elástico" em português.
Eu sei que o nome não soa muito atrativo, mas é uma ferramenta muito boa e interessante de se utilizar. Vamos começar a trabalhar com ela e finalmente colocar nossa aplicação na AWS dentro do container Docker?
Para isso, vou abrir o Visual Studio Code, já na pasta que usaremos no curso. Clicarei com o botão direito e criarei uma nova pasta. Começaremos criando nossos ambientes e arquivos de infraestrutura.
Para os ambientes, ou "environments" em inglês, criaremos a pasta "env". Para infraestrutura, criaremos a pasta "infra". Assim, manteremos os arquivos separados para podermos reutilizar a infraestrutura independentemente do ambiente.
Vamos criar dois ambientes: "homolog", o ambiente de homologação, onde colocaremos as aplicações em alpha ou beta para testarmos, buscarmos bugs e assim por diante; e "prod", o ambiente de produção, onde colocaremos as aplicações quando não encontrarmos nenhum problema.
Com as pastas criadas, começaremos a desenvolver nossa aplicação pela infraestrutura. Iniciaremos pelo provedor, ou "provider". Criaremos o arquivo provider.tf
, onde colocaremos todas as configurações do provedor. Para conseguirmos essas configurações, pesquisaremos no Google por "terraform" e acessaremos o site http://terraform.io.
Na página, acessaremos a seção "tutorials" ("tutoriais"), seguida por "AWS", que é onde vamos subir a aplicação. Aqui encontraremos alguns passo-a-passos que poderemos seguir, começando por uma introdução ao que é a infraestrutura como código, instalação do Terraform e a construção da infraestrutura.
Vamos acessar "build infrastructure". Se você tiver algum problema com o conceito de infraestrutura como código, os cursos anteriores podem lhe ajudar. Já se tiver algum problema em relação à instalação do Terraform, o passo-a-passo estará na atividade "Preparando o ambiente".
O tutorial pedirá que criemos uma pasta, algo que já fizemos, e um arquivo main.tf
dentro dela - que no nosso caso chamamos de providers.tf
, já que colocaremos nele somente o código relacionado ao provedor. Mais adiante, o tutorial nos orienta a criar o módulo do nosso provider, com aquilo que iremos importar; a configuração desse provider; e uma instância de EC2, algo que não faremos.
Vamos selecionar os blocos terraform
e provider "aws"
, copiá-los com "Ctrl + C" e colá-los em nosos arquivo provider.tf
. Agora temos a configuração para executarmos a aplicação na AWS.
O provider pede um módulo maior que a versão 3.27
, algo que a própria Hashcorp, dona do Terraform, fornece. Além disso, também precisa de uma versão do Terraform maior que a 0.14.9
. Em nosso caso, estamos usando a versão 1.0
ou superior, então não precisamos nos preocupar. Salvaremos com "Ctrl + S", e a configuração do provider está pronta.
Sempre que executamos o Terraform, acabamos criando um arquivo de estado, que guarda todo o estado da nossa infraestrutura para podermos comparar qual estado que queremos que a nossa infraestrutura tenha com qual ela realmente tem, para podermos criar o que está faltando nela.
E para podermos executar o Terraform em qualquer máquina, é interessante guardarmos esse arquivo em um local que possa ser facilmente acessado. Nesse caso, vamos guardá-lo no S3 da AWS, assim, ele fica disponível para nossa conta e não vamos perdê-lo caso troquemos de máquina, por exemplo.
Também é muito interessante fazermos isso, caso formos colocar algum tipo de rotina de CD, ou continuous delivery, em português seria “entrega contínua”, que assim temos esse estado sempre disponível para as nossas máquinas.
E para montar esse estado, para podermos guardar esse arquivo de estado, vamos ter que ir no console da AWS e criar um bucket por lá. Esse bucket vai funcionar como se fosse uma pasta, e vamos colocar o arquivo dentro dele. E infelizmente não vamos poder fazê-lo pelo Terraform, já que precisamos dele para o Terraform funcionar.
Então vamos lá. Eu vou abrir o meu console AWS, procurar o S3, entrar no S3, e eu vou criar um bucket, vou em “Criar bucket”.
O que vamos precisar colocar? O nome do bucket. Nesse caso eu vou colocar como “terraform-state-alura”, vou colocar state, porque queremos guardar o arquivo do TF-State ou o Terraform State, e Alura eu vou colocar porque o nome dos buckets precisa ser exclusivo. Ou seja, quando você for criar o seu, você não pode colocar esse mesmo nome, você vai ter que trocar esse nome para uma coisa que fique melhor para você.
Então por exemplo, “terraform-state-“ e você pode colocar o seu nome, o seu nome de usuário ou alguma coisa que você escolher, que você preferir. A região eu vou deixar o “US-west2”, que é a região que eu estou usando atualmente, e o resto eu posso deixar todo padrão. E ele vai estar disponível só para a nossa conta.
Eu vou criar esse bucket, vou esperar um pouco para ele criar, ele foi criado com êxito, e agora temos “terraform-state-alura”.
No momento ele está vazio, acabamos de criá-lo. Vamos ver agora como podemos integrar o Terraform para o Terraform guardar sozinho o arquivo dele aqui dentro. Para isso, eu vou abrir uma nova página e vou pesquisar por “Backend terraform s3”. E vamos dar uma olhada, nós temos um anúncio e embaixo temos o “terraform.io”, que é o site do Terraform.
Dentro dele temos um exemplo de configuração, ele já nos dá um exemplo. Vamos copiar e vamos voltar para o nosso Visual Studio Code. Onde vamos guardar esse arquivo? Temos guardar dentro dos nossos ambientes. Eu vou fazer no ambiente de produção. Então novo arquivo, eu vou chamar de “backend.tf”. E eu vou colá-lo dentro.
Então temos terraform
, backend s3
, bucket = “mybucket”
, então eu preciso colocar o nome do nosso bucket. Vamos voltar no nosso console da AWS, e eu vou só copiar o nome que eu acabei de colocar “terraform-state-alura”, para não ter nenhum tipo de erro de escrita. Copia e cola, bucket = “terraform-state-alura”
.
O caminho, ou seja, onde vamos guardar esse arquivo. No meu caso, eu vou guardar esse arquivo na pasta “Prod”, que é o mesmo do nosso ambiente key = “Prod/terraform.tfstate”
.
E a região que está no meu bucket não é “us-west-1”, é region = “us-west-2”
, foi onde eu criei o meu bucket, é só para ficar mais fácil de conseguirmos descobrir onde está o nosso bucket, apesar de que o bucket vai se autorreplicar para o mundo inteiro. Então lembrando mais uma vez, o nome do bucket tem que ser um nome exclusivo e ele é para o mundo todo. Então você não pode ter 2 buckets com o mesmo nome, mesmo estando em regiões diferentes.
Eu vou dar “Ctrl + S” para salvar esse arquivo, e agora temos o nosso backend, vamos salvar o nosso arquivo de estado, o nosso “tfstate” dentro de um bucket do S3 na AWS. E precisamos distribuí-lo mais fácil, para conseguir acessarmos de varias máquinas diferentes.
O curso Infraestrutura como código: Docker e Elastic Beanstalk na AWS possui 123 minutos de vídeos, em um total de 45 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.