SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Getting Started
O que é esse tal de Terraform?
2
O que é esse tal de Terraform?
Uma ferramenta open source criada pela HashiCorp para o desenvolvimento
de infraestrutura como código.
3
Mas e o Ansible, Chef ou Puppet?
4
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
Uma ferramenta bem parecida é o
AWS CloudFormation.
Porém, só funciona para AWS.
6
Show me the code!
7
Show me the code!
Um simples site estático servido do AWS S3.
goo.gl/urzL3t
8
Um pouco sobre as principais partes do
Terraform
HCL, Provider, Resource, Data Source, State e Execution Plan.
9
● 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
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
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
São os recursos que desejamos criar em nossos providers.
● terraform.io/docs/configuration/resources.html
Resources
13
São os elementos responsáveis por carregar dados
preexistentes em seus providers.
● terraform.io/docs/configuration/data-sources.html
Data Sources
14
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
São os elementos responsáveis por carregar dados
preexistentes em seus providers.
● terraform.io/docs/configuration/data-sources.html
Execution
Plan
16
Avançando um pouquinho mais
17
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
Interpolation
Syntax
Count / Loops
Não tem loops mas dá pra se virar com o count.
● terraform.io/docs/configuration/interpolation.html
19
Interpolation
Syntax
Conditionals
Não tem IF mas dá pra fazer ternários.
● terraform.io/docs/configuration/interpolation.html
20
● 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
● 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
● Melhora a formatação do plano de execução do Terraform.
● github.com/coinbase/terraform-landscape
Terraform
Landscape
23
Grafo de
dependências
Este é o grafo de dependências do nosso exemplo.
● terraform.io/docs/commands/graph.html
24
Blast Radius
O grafo gerado pelo Terraform on steroids (interativo).
● github.com/28mm/blast-radius
25
Pra finalizar!
Quais problemas o Terraform resolve?
26
● 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
Obrigado :-)
Bruno Soares | bsoares.com
T E R R A F O R M

Mais conteúdo relacionado

Semelhante a Terraform - Getting Started

[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDBVinicius de Sá
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesrjsmelo
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelMozDevz
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoFelipeDi
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoWeldir Fernando Dias
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passosrhpinotti
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
TDC2016SP - Por dentro do .Net Core
TDC2016SP - Por dentro do .Net CoreTDC2016SP - Por dentro do .Net Core
TDC2016SP - Por dentro do .Net Coretdc-globalcode
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 

Semelhante a Terraform - Getting Started (20)

[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to Laravel
 
Mastering Laravel
Mastering LaravelMastering Laravel
Mastering Laravel
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passos
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
TDC2016SP - Por dentro do .Net Core
TDC2016SP - Por dentro do .Net CoreTDC2016SP - Por dentro do .Net Core
TDC2016SP - Por dentro do .Net Core
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 

Terraform - Getting Started

  • 2. O que é esse tal de Terraform? 2
  • 3. O que é esse tal de Terraform? Uma ferramenta open source criada pela HashiCorp para o desenvolvimento de infraestrutura como código. 3
  • 4. Mas e o Ansible, Chef ou Puppet? 4
  • 5. 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
  • 6. Uma ferramenta bem parecida é o AWS CloudFormation. Porém, só funciona para AWS. 6
  • 7. Show me the code! 7
  • 8. Show me the code! Um simples site estático servido do AWS S3. goo.gl/urzL3t 8
  • 9. Um pouco sobre as principais partes do Terraform HCL, Provider, Resource, Data Source, State e Execution Plan. 9
  • 10. ● 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
  • 11. 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
  • 12. 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
  • 13. São os recursos que desejamos criar em nossos providers. ● terraform.io/docs/configuration/resources.html Resources 13
  • 14. São os elementos responsáveis por carregar dados preexistentes em seus providers. ● terraform.io/docs/configuration/data-sources.html Data Sources 14
  • 15. 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
  • 16. São os elementos responsáveis por carregar dados preexistentes em seus providers. ● terraform.io/docs/configuration/data-sources.html Execution Plan 16
  • 18. 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
  • 19. Interpolation Syntax Count / Loops Não tem loops mas dá pra se virar com o count. ● terraform.io/docs/configuration/interpolation.html 19
  • 20. Interpolation Syntax Conditionals Não tem IF mas dá pra fazer ternários. ● terraform.io/docs/configuration/interpolation.html 20
  • 21. ● 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
  • 22. ● 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
  • 23. ● Melhora a formatação do plano de execução do Terraform. ● github.com/coinbase/terraform-landscape Terraform Landscape 23
  • 24. Grafo de dependências Este é o grafo de dependências do nosso exemplo. ● terraform.io/docs/commands/graph.html 24
  • 25. Blast Radius O grafo gerado pelo Terraform on steroids (interativo). ● github.com/28mm/blast-radius 25
  • 26. Pra finalizar! Quais problemas o Terraform resolve? 26
  • 27. ● 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
  • 28. Obrigado :-) Bruno Soares | bsoares.com T E R R A F O R M