Alura > Cursos de DevOps > Cursos de Infraestrutura como Código > Conteúdos de Infraestrutura como Código > Primeiras aulas do curso Infraestrutura como código: preparando máquinas na AWS com Ansible e Terraform

Infraestrutura como código: preparando máquinas na AWS com Ansible e Terraform

Fundamentos da IaC - Apresentação

Leonardo: Olá, eu sou Leonardo.

Guilherme: E eu sou Guilherme e nós seremos seus instrutores neste treinamento de infraestrutura como código.

Leonardo: Bom Gui, o que que nós vamos aprender nesse curso?

Guilherme: Nesse curso, nós vamos aprender os fundamentos de infraestrutura como código, quais são os problemas que ela resolve e como que nós utilizamos ela de forma pratica.

Leonardo: Bom, nós vamos ver isso através de duas ferramentas: o Terraform e o Ansible, que são as ferramentas que vamos utilizar para configurar e gerenciar nosso ambiente.

Guilherme: Além disso, nós precisamos de um Cloud para manter toda essa nossa infraestrutura e neste treinamento nós focamos no Cloud da AWS.

Leonardo: Mas vamos ver para quem que é esse curso. Esse curso é focado principalmente para quem está dando seus primeiros passos em infraestrutura como código e também com Terraform, Ansible e AWS de forma geral.

Guilherme: Boa. Fazendo esse curso, você vai ser capaz de criar, gerenciar e controlar a sua infraestrutura, seja ambiente de desenvolvimento ou em ambiente de produção, através de código de forma prática, objetiva e muito mais simples.

Leonardo: Vamos começar?

Guilherme: Vamos lá.

Fundamentos da IaC - Infraestrutura

Vamos iniciar, então, os nossos estudos de infraestrutura como código. Bom, nós vamos conhecer a história da Ana. A Ana é estudante de tecnologia e ela está trabalhando para desenvolver o TCC dela, e um dos requisitos do TCC é ela colocar esse ambiente que ela fez, esse projeto que ela está fazendo no ar, ou seja, Ana está muito feliz porque na máquina dela está funcionando tudo, a frase clássica de quem desenvolve, na minha máquina está funcionando.

Só que quando a Ana botou o projeto dela para rodar, não funcionou, alguma coisa aconteceu e ela foi pesquisar, "caramba, o que será que aconteceu no meu projeto?" Ela viu lá, o projeto dela precisava de algumas dependências e por algum motivo uma dependência não estava sendo atualizada e precisava ser atualizada. Por algum motivo a Ana fazia essa atualização na sua máquina local e o projeto funcionava, só que quando era o projeto lá no Cloud, no ambiente de deploy, o projeto não funcionava.

O que a Ana precisou fazer? Ela precisou fazer um novo deploy e de forma manual. Quando ela fez essa atualização lá da infraestrutura do ambiente de deploy dela, ela conseguiu rodar o seu projeto de forma certa, ou seja, a cada modificação no TCC, atualização, manutenção de código que precisa realizar, ela vai precisar submeter um novo deploy de forma manual. Isso é um pouco perigoso.

Minha pergunta é: será que existe alguma forma de conseguirmos controlar essa nossa infraestrutura, quais são os modos que nós precisamos, quais são os pacotes, o próprio ambiente, o sistema operacional que nós vamos fazer o deploy, de forma automatizada? E a resposta é sim, existe uma forma. É possível automatizar o processo de deploy e entrega de software,

O que que significa? Significa que você pode gerenciar toda a sua infraestrutura, não clicando em uma página, executando comandos ou comandos no terminal via Bash, igual a Ana fez para conseguir atualizar o projeto dela, mas nós conseguimos controlar toda nossa infra por meio de código e isso é um conceito chamado infraestrutura como código, que eu, juntamente com Léo, vamos ver na sequência.

Fundamentos da IaC - O que é IaC?

Guilherme: Vamos entender, então, o que é infraestrutura como código. Leo, o que é, na verdade, essa sigla, essa coisa mágica?

Leonardo: Bom, Gui, de mágica não tem nada. A infraestrutura como um código, ou também chamada de IaC, é um jeito que nós temos de escrever e executar código para nós podermos definir, implantar, atualizar e gerenciar a infraestrutura. Uma característica muito importante do IaC é que você pode gerenciar servidores, banco de dados, redes, arquivos de log, configurações de aplicativos, documentação, testes automatizados, entre outras coisas, através de código.

Guilherme: Certo, então se nós voltarmos no exemplo da Ana, ela teria total controle de todo o seu ambiente, de toda a infraestrutura necessária para que ela conseguisse controlar o ambiente que está e tudo isso feito com código. Essa é a ideia, Léo?

Leonardo: Isso, Gui. Essa é a ideia.

Guilherme: Certo. Se nós pararmos para pensar: a Ana ia conseguir definir toda o ambiente com um código, eu imagino que esse código vai ter um histórico para saber qual atualização que nós estamos, qual ferramenta já foi atualizada ou não, de alguma forma que para mim por enquanto ainda é um pouco mágica. Ela conseguiria fazer o deploy, atualizar e gerenciar todos os módulos e pacotes necessários para o projeto dela. Certo. Mas quais são as ferramentas, Léo, que nós podemos utilizar para criar esse ambiente todo com um código?

Leonardo: Bom Gui, nós temos algumas ferramentas: entre elas, nós temos a Terraform que é uma ferramenta que permite criarmos, alterarmos e melhorarmos a infraestrutura de forma rápida e previsível, nós também temos o Ansible, que é uma ferramenta que permite automatizar a instalação e atualização de aplicativos dentro dos nossos servidores, e também gerenciar algumas configurações, além de ferramentas de entrega continua.

Leonardo: Além disso, nós temos outras ferramentas também, como o Chef e o Puppet que fazem a mesma função do Ansible, e o Crossplane, que funciona dentro do Kubernetes, também para manejar infraestrutura.

Guilherme: Legal. Quando nós falamos de infraestrutura como código, o que eu podia pensar é o seguinte, Léo: se a Ana fizesse um script em Bash com Python ou Ruby para gerenciar toda a estrutura dela, já que estamos falando de controlar a infraestrutura com código, isso daria certo, Léo?

Leonardo: Gui, até daria certo, ela até pode fazer isso, mas é difícil manter isso a logo prazo, porque cada vez que nós criarmos um script desse, cada um vai ser de um jeito diferente. Além disso, esses scripts dependem muito do ambiente que estão sendo executados, então se nós tentarmos executar esse script que você criou em outra máquina, pode ser que dê alguma diferença.

Leonardo: Também tem a convenção de código. Não obrigatoriamente os scripts que eu e você criarmos, um Bash por exemplo, vão estar escritos da mesma forma, então fica difícil de dar manutenção no futuro. Também tem questão de atualização. Se, por exemplo, nós tivermos usando a AWS e se atualizar algum comando dela e precisar de outros parâmetros ou alguma coisa diferente, o nosso script vai ter que ser atualizado também, porque ele não vai estar pronto para essa atualização.

Leonardo: Porque as ferramentas feitas para IaC, como Terraform por exemplo, dão suporte a essas atualizações futuras. E também tem essa palavrinha bonita que é idempotência, ou seja, o que essa palavra significa? Se nós executarmos várias vezes o nosso código, temos que ter certeza que vai ter sempre a mesma saída, mesmo executando em uma máquina que ele já foi executado.

Guilherme: Entendeu. A sacada, Léo, seria o seguinte: se nós criarmos um script em Python ou em Ruby, um script Bash, para verificar isso, nós teríamos que garantir que não estamos tentando atualizar duas vezes o mesmo pacote e tal, para manter a nossa infraestrutura funcionando de forma correta.

Leonardo: Exatamente.

Guilherme: Isso seria um grande problema, e pensando nisso, nós vimos no slide anterior sobre o Terraform, o Terraform seria a primeira ferramenta que a Ana usaria, Leo, isso faz sentido?

Leonardo: Faz sim, Gui. Faz bastante sentido.

Guilherme: Beleza. E como ele funciona, Léo?

Leonardo: Bom, Gui, como o Terraform funciona? Nós vamos escrever algum script de configuração com uma linguagem específica do Terraform, uma linguagem simples, mas nós vamos utiliza-la. Esse script vai ser interpretado pelo Terraform e o Terraform vai fazer a mágica, digamos assim, que não é mágica, é tudo código, por traz. Com o mesmo script, nós conseguimos subir em nossa infraestrutura e em vários provedores, ou seja, conseguimos subir na AWS, na Azure, no Google Cloud, entre vários outros.

Guilherme: Caramba, Léo, é bastante informação, mas de fato quais são os benefícios efetivos de utilizar a IaC, Léo?

Leonardo: Bom Gui, vamos aos benefícios efetivos da IaC. Primeiro, com o IaC, com a nossa infraestrutura com código, nós conseguimos fazer um processo de deploy mais automatizado, então é mais rápido, porque um computador faz essas etapas melhor que um humano, mas é mais rápido para executar as etapas. Isso torna o processo mais seguro, já como ele é automatizado, ele é mais consistente.

Leonardo: Nós também temos o controle de versão, então nós conseguimos guardar essas atualizações, nós fazemos nosso código de forma simples e se der algum problema conseguimos voltar de forma também simples para uma versão anterior da nossa infraestrutura, evitando problema do nosso aplicativo ficar fora do ar.

Nós também temos velocidade e segurança, que como está tudo definido em um arquivo e esse arquivo é fácil de conseguirmos ler, não só hoje, mas no futuro também, porque é uma linguagem específica para isso, ele vai executar sempre da mesma forma e de forma mais otimizada possível. Por fim, nós também temos o reuso, então nós conseguimos copiar blocos de código e reutiliza-los para fazer outras partes da nossa infraestrutura, deixando todo o processo um pouco mais ágio.

Guilherme: Legal. Uma coisa que me chamou bastante atenção, Léo, nesse ponto dos benefícios, é essa parte do controle de versão. Teoricamente, nós vamos ter um estado de como estar a nossa infraestrutura na versão 1, de repente nós atualizamos um pacote, faz alguma coisa, a própria ferramenta, nesse caso o Terraform, saberia o que mudou, o que foi alterado, semelhante a um Git da infraestrutura, algo desse tipo.

Leonardo: Exatamente, Gui. Geralmente guardamos esses arquivos geralmente em Git.

Guilherme: Que legal, muito bom. Léo, pensando nisso, vamos botar a mão na massa e vamos começar a criar o nosso primeiro código para manter, gerenciar toda nossa estrutura?

Leonardo: Vamos lá, Gui.

Sobre o curso Infraestrutura como código: preparando máquinas na AWS com Ansible e Terraform

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 36 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:

Aprenda Infraestrutura como Código acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas