Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Guia para iniciantes: Provisione sua primeira i...

Guia para iniciantes: Provisione sua primeira infraestrutura com Terraform e AWS

Palestra sobre como funciona o lifecycle do Terraform e principais conceitos da configuração de um arquivo para provisionar uma infraestrutura para AWS.

Avatar for Mayumi Shingaki (Mayu)

Mayumi Shingaki (Mayu)

October 05, 2023

Other Decks in Technology

Transcript

  1. Engenheira de Software no Itaú Tecnóloga em ADS pela FATEC-SP

    Pós graduanda em Engenharia de Software pela USP Conselheira e Líder do Programa de Embaixadoras na WomakersCode Co-Organizadora da NodeBR Criadora de conteúdo no @mayumidev Golfista nas horas vagas @mayumidev
  2. Se você pretende realizar operações de maneira confiável, precisa torná-las

    reproduzíveis e pragmáticas. Mike Loukides @mayumidev
  3. 1 2 3 Infrastructure as Code Usado para automatizar a

    criação, configuração e gerenciamento de infraestrutura de TI Ferramenta de código aberto Criado pela Hashicorp é uma ferramenta gratuita usado por equipes de DevOps e Engenheiros Código Terraform Os arquivos incluem informações sobre os recursos e como devem ser configurados. Podendo ser parametrizados. @mayumidev
  4. 1 3 2 Reutilização de código Você pode criar módulos

    Terraform reutilizáveis para encapsular configurações comuns ou complexas. Integração O Terraform é frequentemente usado em conjunto com outras ferramentas, como sistemas de CI/CD, ferramentas de gerenciamento de configuração e orquestração de contêineres. Controle de Estado O Terraform mantém um estado que rastreia o estado atual da infraestrutura provisionada, minimizando os riscos de conflitos. @mayumidev
  5. AWS CLI É o Command Line Interface que permite unificar

    o gerenciamento de recursos da AWS através de scripts. Terraform A instalação do Terraform varia conforme o seu sistema operacional, instale a versão mais recente no seu computador. @mayumidev
  6. CICLO DE VIDA O ciclo de vida do Terraform envolve

    uma série de etapas que ocorrem ao criar, modificar ou destruir recursos de infraestrutura. Essas etapas são gerenciadas pelo Terraform para garantir que a infraestrutura seja criada e mantida de acordo com as especificações declaradas em seu código Terraform. @mayumidev
  7. Nesta fase, você define sua configuração de infraestrutura usando código

    Terraform. Isso envolve a criação de arquivos de configuração que especificam quais recursos você deseja provisionar. Você também define variáveis, módulos, provedores e outros elementos necessários para sua configuração. @mayumidev
  8. Antes de usar o Terraform em um diretório de projeto,

    você precisa inicializá-lo. Isso é feito executando o comando “terraform init”. Durante a inicialização, o Terraform baixa os plugins (provers) necessários e configura o estado (state) inicial. O estado é um arquivo que rastreia o estado atual dos recursos de infraestrutura gerenciados pelo Terraform. @mayumidev
  9. Depois de definir sua configuração e inicializar o diretório do

    projeto, você pode executar o comando “terraform plan”. O Terraform examina sua configuração e o estado atual. Ele gera um plano de execução que mostra quais recursos serão criados, modificados ou destruídos. @mayumidev
  10. Uma vez que você revisou o plano de execução e

    está satisfeito com as mudanças propostas, você pode aplicar as alterações executando o comando terraform apply. Durante a aplicação, o Terraform também atualiza o estado para refletir o novo estado da infraestrutura. @mayumidev
  11. O Terraform mantém um arquivo de estado que rastreia o

    estado atual dos recursos provisionados. Isso é usado para garantir que o Terraform saiba quais recursos já foram criados e como eles estão configurados. @mayumidev @mayumidev
  12. À medida que sua infraestrutura evolui, você pode atualizar seu

    código Terraform para refletir as alterações desejadas. Depois de atualizar seu código, você pode executar novamente o ciclo de planejamento e aplicação para implementar as alterações. @mayumidev
  13. Quando você deseja remover permanentemente recursos de infraestrutura, pode usar

    o comando “terraform destroy”. Isso remove todos os recursos gerenciados pelo Terraform, conforme definido em seu código. É importante ter backups adequados e entender as implicações antes de executar esse comando. @mayumidev
  14. A estrutura básica de configuração do Terraform envolve a criação

    de arquivos de configuração que descrevem a infraestrutura que você deseja provisionar. Os arquivos de configuração geralmente seguem uma estrutura comum que inclui os seguintes elementos: Providers (Provedores) Você especifica os provedores de infraestrutura que deseja usar no início do arquivo de configuração. Um provedor é uma plataforma ou serviço de nuvem como GCP, AWS, Azure, etc. Depois de definir o provedor, você pode começar a descrever os recursos de infraestrutura que deseja criar. Recursos podem ser máquinas virtuais, bancos de dados, redes, etc. Resources (Recursos) @mayumidev
  15. Variables (Variáveis) Para tornar seu código Terraform mais flexível e

    reutilizável, você pode definir variáveis para valores que podem ser parametrizados. Isso permite que você configure dinamicamente recursos e mantenha a flexibilidade. À medida que sua infraestrutura cresce e fica mais complexa, você pode criar módulos reutilizáveis para encapsular configurações e funcionalidades específicas. Modules (Módulos) Outputs (Saídas) Para fornecer informações úteis após a criação da infraestrutura, você pode definir saídas que exibem valores específicos, como endereços IP ou IDs de recursos. O Terraform mantém um arquivo de estado que rastreia o estado atual da infraestrutura. Este arquivo é usado para determinar as alterações necessárias quando você executa comandos como terraform apply. State (Estado) @mayumidev
  16. Organize seu código Versione Evite configuração excessivamente complexa Use módulos

    para abstração Use Workspaces Evite referências diretas Valide as alterações no plano Faça backup Automatize com CI/CD @mayumidev