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

Terraform - Getting Started

Avatar for Bruno Soares Bruno Soares
September 26, 2018

Terraform - Getting Started

Avatar for Bruno Soares

Bruno Soares

September 26, 2018

More Decks by Bruno Soares

Other Decks in Technology

Transcript

  1. O que é esse tal de Terraform? Uma ferramenta open

    source criada pela HashiCorp para o desenvolvimento de infraestrutura como código. 3
  2. Mas e o Ansible, Chef ou Puppet? Foram criados para

    resolver outro tipo de problema, mas hoje em dia até que se parecem um pouco com o Terraform. 5
  3. Um pouco sobre as principais partes do Terraform HCL, Provider,

    Resource, Data Source, State e Execution Plan. 9
  4. • HashiCorp Configuration Language. • A ideia é ser simples,

    apenas uma linguagem de configuração. • Tão simples que não tem IFs nem Loops . • Feita em Go. • github.com/hashicorp/hcl A linguagem HCL 10
  5. Bibliotecas que implementam o gerenciamento dos recursos. Quando instruímos o

    Terraform a criar um Bucket do S3 ou um usuário no MySQL, na verdade quem está executando o comando é o provider da AWS ou o provider do MYSQL. • Alguns exemplos de providers: AWS, CloudFlare, Datadog, GitHub, Terraform... • Mais providers aqui terraform.io/docs/providers/ Providers 11
  6. Como qualquer outra linguagem, variáveis servem para tornar o código

    mais dinâmico e reutilizável. • Tipos possíveis: string, list e map. • terraform.io/docs/configuration/variables.html Variables 12
  7. São os recursos que desejamos criar em nossos providers. •

    terraform.io/docs/configuration/resources.html Resources 13
  8. São os elementos responsáveis por carregar dados preexistentes em seus

    providers. • terraform.io/docs/configuration/data-sources.html Data Sources 14
  9. Um arquivo JSON que salva o estado da última execução.

    • Algumas opções de armazenamento são: local, AWS S3 e Vault (o da HashiCorp). • terraform.io/docs/state/index.html State 15
  10. São os elementos responsáveis por carregar dados preexistentes em seus

    providers. • terraform.io/docs/configuration/data-sources.html Execution Plan 16
  11. Modules • Módulos são usados para criar componentes reutilizáveis no

    Terraform, bem como para organização básica de código. • São muito usados para criação de ambientes de staging. • Você pode encontrar muitos módulos prontos, veja: registry.terraform.io. • terraform.io/docs/modules/create.html 18
  12. Interpolation Syntax Count / Loops Não tem loops mas dá

    pra se virar com o count. • terraform.io/docs/configuration/interpolation.html 19
  13. Interpolation Syntax Conditionals Não tem IF mas dá pra fazer

    ternários. • terraform.io/docs/configuration/interpolation.html 20
  14. • Backends são opções de execução, storage remoto, e lock

    do state. • Ajuda muito no trabalho em equipe e na segurança do state. • Um backend muito simples e útil é o AWS S3: terraform.io/docs/backends/types/s3.html Backends 21
  15. • Ferramenta usada para gerenciar múltiplas versões do Terraform instaladas

    na máquina. • Bom para manter a versão do terraform igual entre os desenvolvedores. • Bom para "lockar" a versão do Terraform por projeto. • Pra quem conhece o NVM, RVM, rbenv ou o virtualenv… É a mesma coisa. • github.com/Zordrak/tfenv tfenv 22
  16. • Melhora a formatação do plano de execução do Terraform.

    • github.com/coinbase/terraform-landscape Terraform Landscape 23
  17. Grafo de dependências Este é o grafo de dependências do

    nosso exemplo. • terraform.io/docs/commands/graph.html 24
  18. • Recuperação de desastres. • Documentação. • Versionamento. • Trabalho

    em equipe. • Criação de ambientes de staging. • Monitoramento de mudanças. • ... Quais problemas o Terraform resolve? 27