SlideShare uma empresa Scribd logo
Introdução ao terraform
“hello ”
Agenda
• Motivação
• O que é Terraform?
• Qual o plano?
• Demo
• Mais funcionalidades
Motivação
Evitar o Next > Input > Next > Input > Finish (WRONG!)
Motivação
• Evitar a repitição
• Evitar o erro humano
• A preguiça fala mais “auto”
• Entrar na moda de *aC
Motivação
hype := “2018 é * as Code”
Infrastructure Environment Architecture CI/CD
Hype Driven Development (HDD)
O que é Terraform?
Terraform é uma ferramenta para construção,
alteração e versionamento de infraestrutura com
segurança e eficiência
“
”
Definição
O que é Terraform?
Alinhamento
• Permite definir recursos de maneira declarativa
• Não é uma API Abstraction Layer
• Cada cloud tem seus próprios recursos
O que é Terraform?
‣‣ Ferramenta criada pela HashiCorp
Open Source
O que é Terraform?
‣‣ Escrita em Go
‣‣ Suporta vários provedores
O que é Terraform?
e muito mais
O que é Terraform?
‣‣ Suporta vários provedores
provider "aws" {
region = "us-west-1"
}
O que é Terraform?
‣‣ Permite codificar sua infraestrutura em arquivos de configuração
$ ls
main.tf
variables.tf.json
terraform.tfstate
Extensões Descrição
*.tf e *.tf.json Arquivos de configuração
*.tfstate, *tfstate.lock Arquivos de estado
.terraform/ Arquivos de plugins
O que é Terraform?
‣‣ Codificação em HCL, syntax yaml/json hybrid
resource "aws_instance" "web" {
count = 5
ami = "ami-408c7f28"
instance_type = "t1.micro"
}
HCL (HashiCorp Configuration Language)
O que é Terraform?
‣‣ HCL é construída em torno de dois conceitos principais: blocos¹ e atributos²
resource "aws_instance" "web" {
count = 5
ami = "ami-408c7f28"
instance_type = "t1.micro"
}
HCL (human-friendly)
{
"resource": {
"aws_instance": {
"web": {
"count": 5,
"ami": "ami-408c7f28",
"instance_type": "t1.micro"
}
}
}
JSON (verbose, doesn't support comments)
equivalente
¹
²
main.tf main.tf.json
Qual o Plano?
• Instalação
• O CLI
• O primeiro plano aplicado
• Demo
Instalação
‣‣ Em 2 passos
# Download do binário(1)
$ wget -O "/tmp/terraform.zip" 
"https://releases.hashicorp.com/terraform/0.11.8/terraform_0.11.8_linux_amd64.zip"
# Instalação do binário (2)
$ sudo unzip "/tmp/terraform.zip" -d "/usr/local/bin"
# Verificação da instalação
$ terraform -v
Terraform v0.11.8
$ terraform
Usage: terraform [-version] [-help] <command> [args]
The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
Common commands:
apply Builds or changes infrastructure
console Interactive console for Terraform interpolations
destroy Destroy Terraform-managed infrastructure
env Workspace management
fmt Rewrites config files to canonical format
get Download and install modules for the configuration
graph Create a visual graph of Terraform resources
import Import existing infrastructure into Terraform
init Initialize a Terraform working directory
output Read an output from a state file
plan Generate and show an execution plan
providers Prints a tree of the providers used in the configuration
push Upload this Terraform module to Atlas to run
refresh Update local state file against real resources
show Inspect Terraform state or plan
taint Manually mark a resource for recreation
untaint Manually unmark a resource as tainted
validate Validates the Terraform files
version Prints the Terraform version
workspace Workspace management
All other commands:
debug Debug output management (experimental)
force-unlock Manually unlock the terraform state
state Advanced state management
O CLI
$ terraform
Usage: terraform [-version] [-help] <command> [args]
The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
Common commands:
apply Builds or changes infrastructure
console Interactive console for Terraform interpolations
destroy Destroy Terraform-managed infrastructure
env Workspace management
fmt Rewrites config files to canonical format
get Download and install modules for the configuration
graph Create a visual graph of Terraform resources
import Import existing infrastructure into Terraform
init Initialize a Terraform working directory
output Read an output from a state file
plan Generate and show an execution plan
providers Prints a tree of the providers used in the configuration
push Upload this Terraform module to Atlas to run
refresh Update local state file against real resources
show Inspect Terraform state or plan
taint Manually mark a resource for recreation
untaint Manually unmark a resource as tainted
validate Validates the Terraform files
version Prints the Terraform version
workspace Workspace management
All other commands:
debug Debug output management (experimental)
force-unlock Manually unlock the terraform state
state Advanced state management
O CLI
Configurações básicas
‣‣ Provedor AWS
# Configuração AWS
$ export AWS_ACCESS_KEY_ID="AAAAAAAAAAAAAAAAAAA"
$ export AWS_SECRET_ACCESS_KEY="WWWWWWWWWWWWWWW"
# ou
$ echo "
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAA
aws_secret_access_key = WWWWWWWWWWWWWWW
" > $HOME/.aws/credentials
$ mkdir /tmp/terraform-example
$ cd /tmp/terraform-example
$ touch main.tf
O primeiro main.tf
$ cat main.tf
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "hello-terraform" {
ami = "ami-0922553b7b0369273" // Amazon Linux 2 AMI (HVM), SSD Volume Type
instance_type = "t2.micro"
subnet_id = "subnet-a34efee8" // VPC/Subnet
security_groups = [
"sg-002d12c714c38bf12" // Security groups
]
tags {
Name = "hello-terraform-demo"
}
}
Demo
$ ...
Mais funcionalidades
$ MÓDULOS - https://registry.terraform.io
module "rds" {
source = "terraform-aws-modules/rds/aws"
version = "1.22.0"
# insert the 10 required variables here
}
Mais funcionalidades
$ MÓDULOS
module "rds" {
source = "terraform-aws-modules/rds/aws"
version = "1.22.0"
# insert the 10 required variables here
}
Sources: local, regitry (registry.terraform.io), git
Mais funcionalidades
$ ESTADO REMOTO (Usando em time)
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
Links úteis
• Terraform Module Registry (Módulos reutilizáveis)
• Confluence: Tags & Labels (Tags obrigatórias)
• Repository Structure (Best practices)
Perguntas?
$ echo “obrigado”
Dúvidas:
Waldinar Neto <netoht@gmail.com>

Mais conteúdo relacionado

PDF
Terraform.pdf
PPTX
Terraform.pptx
PDF
Terraform - Getting Started
PDF
Uma breve introdução ao Terraform
PDF
Terraform Leonardo Brito - IAC
PDF
Infraestrutura como código Terraform aws openshift Ansible
PPTX
Terraform DeepDive
PDF
Integrando o dev com o ops - Marcelo Castellani
Terraform.pdf
Terraform.pptx
Terraform - Getting Started
Uma breve introdução ao Terraform
Terraform Leonardo Brito - IAC
Infraestrutura como código Terraform aws openshift Ansible
Terraform DeepDive
Integrando o dev com o ops - Marcelo Castellani

Semelhante a Hello Terraform (14)

PDF
You build it, you run it!
PDF
Terraform + Kops + Kubernetes na AWS
PDF
Continuous Deployment e DevOps na Nuvem
PPTX
SRE & Cloud & Containers
PPTX
Do zero ao GitOps DevopsDaysSP
PDF
Elastic MeetUp Porto Alegre
PPTX
Dev Parana - Praticas Devops aplicadas a Big Data
PPTX
Trabalhando com a infraestrutura como software na AWS com Elastic Beanstalk e...
PDF
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
PDF
Infraestrutura como codigo
PDF
Primeiros passos com Openstack
PPTX
2016/08/19 - Uma visão geral da AWS para desenvolvedores
PDF
Apresentação Openstack - FISL 2013
PDF
Infraestrutura como código
You build it, you run it!
Terraform + Kops + Kubernetes na AWS
Continuous Deployment e DevOps na Nuvem
SRE & Cloud & Containers
Do zero ao GitOps DevopsDaysSP
Elastic MeetUp Porto Alegre
Dev Parana - Praticas Devops aplicadas a Big Data
Trabalhando com a infraestrutura como software na AWS com Elastic Beanstalk e...
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Infraestrutura como codigo
Primeiros passos com Openstack
2016/08/19 - Uma visão geral da AWS para desenvolvedores
Apresentação Openstack - FISL 2013
Infraestrutura como código
Anúncio

Último (19)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Processos na gestão de transportes, TM100 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula 18 - Manipulacao De Arquivos python
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Apple Pippin Uma breve introdução. - David Glotz
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula04-Academia Heri- Tecnologia Geral 2025
Anúncio

Hello Terraform

  • 2. Agenda • Motivação • O que é Terraform? • Qual o plano? • Demo • Mais funcionalidades
  • 3. Motivação Evitar o Next > Input > Next > Input > Finish (WRONG!)
  • 4. Motivação • Evitar a repitição • Evitar o erro humano • A preguiça fala mais “auto” • Entrar na moda de *aC
  • 5. Motivação hype := “2018 é * as Code” Infrastructure Environment Architecture CI/CD Hype Driven Development (HDD)
  • 6. O que é Terraform? Terraform é uma ferramenta para construção, alteração e versionamento de infraestrutura com segurança e eficiência “ ” Definição
  • 7. O que é Terraform? Alinhamento • Permite definir recursos de maneira declarativa • Não é uma API Abstraction Layer • Cada cloud tem seus próprios recursos
  • 8. O que é Terraform? ‣‣ Ferramenta criada pela HashiCorp Open Source
  • 9. O que é Terraform? ‣‣ Escrita em Go
  • 10. ‣‣ Suporta vários provedores O que é Terraform? e muito mais
  • 11. O que é Terraform? ‣‣ Suporta vários provedores provider "aws" { region = "us-west-1" }
  • 12. O que é Terraform? ‣‣ Permite codificar sua infraestrutura em arquivos de configuração $ ls main.tf variables.tf.json terraform.tfstate Extensões Descrição *.tf e *.tf.json Arquivos de configuração *.tfstate, *tfstate.lock Arquivos de estado .terraform/ Arquivos de plugins
  • 13. O que é Terraform? ‣‣ Codificação em HCL, syntax yaml/json hybrid resource "aws_instance" "web" { count = 5 ami = "ami-408c7f28" instance_type = "t1.micro" } HCL (HashiCorp Configuration Language)
  • 14. O que é Terraform? ‣‣ HCL é construída em torno de dois conceitos principais: blocos¹ e atributos² resource "aws_instance" "web" { count = 5 ami = "ami-408c7f28" instance_type = "t1.micro" } HCL (human-friendly) { "resource": { "aws_instance": { "web": { "count": 5, "ami": "ami-408c7f28", "instance_type": "t1.micro" } } } JSON (verbose, doesn't support comments) equivalente ¹ ² main.tf main.tf.json
  • 15. Qual o Plano? • Instalação • O CLI • O primeiro plano aplicado • Demo
  • 16. Instalação ‣‣ Em 2 passos # Download do binário(1) $ wget -O "/tmp/terraform.zip" "https://releases.hashicorp.com/terraform/0.11.8/terraform_0.11.8_linux_amd64.zip" # Instalação do binário (2) $ sudo unzip "/tmp/terraform.zip" -d "/usr/local/bin" # Verificação da instalação $ terraform -v Terraform v0.11.8
  • 17. $ terraform Usage: terraform [-version] [-help] <command> [args] The available commands for execution are listed below. The most common, useful commands are shown first, followed by less common or more advanced commands. If you're just getting started with Terraform, stick with the common commands. For the other commands, please read the help and docs before usage. Common commands: apply Builds or changes infrastructure console Interactive console for Terraform interpolations destroy Destroy Terraform-managed infrastructure env Workspace management fmt Rewrites config files to canonical format get Download and install modules for the configuration graph Create a visual graph of Terraform resources import Import existing infrastructure into Terraform init Initialize a Terraform working directory output Read an output from a state file plan Generate and show an execution plan providers Prints a tree of the providers used in the configuration push Upload this Terraform module to Atlas to run refresh Update local state file against real resources show Inspect Terraform state or plan taint Manually mark a resource for recreation untaint Manually unmark a resource as tainted validate Validates the Terraform files version Prints the Terraform version workspace Workspace management All other commands: debug Debug output management (experimental) force-unlock Manually unlock the terraform state state Advanced state management O CLI
  • 18. $ terraform Usage: terraform [-version] [-help] <command> [args] The available commands for execution are listed below. The most common, useful commands are shown first, followed by less common or more advanced commands. If you're just getting started with Terraform, stick with the common commands. For the other commands, please read the help and docs before usage. Common commands: apply Builds or changes infrastructure console Interactive console for Terraform interpolations destroy Destroy Terraform-managed infrastructure env Workspace management fmt Rewrites config files to canonical format get Download and install modules for the configuration graph Create a visual graph of Terraform resources import Import existing infrastructure into Terraform init Initialize a Terraform working directory output Read an output from a state file plan Generate and show an execution plan providers Prints a tree of the providers used in the configuration push Upload this Terraform module to Atlas to run refresh Update local state file against real resources show Inspect Terraform state or plan taint Manually mark a resource for recreation untaint Manually unmark a resource as tainted validate Validates the Terraform files version Prints the Terraform version workspace Workspace management All other commands: debug Debug output management (experimental) force-unlock Manually unlock the terraform state state Advanced state management O CLI
  • 19. Configurações básicas ‣‣ Provedor AWS # Configuração AWS $ export AWS_ACCESS_KEY_ID="AAAAAAAAAAAAAAAAAAA" $ export AWS_SECRET_ACCESS_KEY="WWWWWWWWWWWWWWW" # ou $ echo " [default] aws_access_key_id = AAAAAAAAAAAAAAAAAAA aws_secret_access_key = WWWWWWWWWWWWWWW " > $HOME/.aws/credentials $ mkdir /tmp/terraform-example $ cd /tmp/terraform-example $ touch main.tf
  • 20. O primeiro main.tf $ cat main.tf provider "aws" { region = "us-east-1" } resource "aws_instance" "hello-terraform" { ami = "ami-0922553b7b0369273" // Amazon Linux 2 AMI (HVM), SSD Volume Type instance_type = "t2.micro" subnet_id = "subnet-a34efee8" // VPC/Subnet security_groups = [ "sg-002d12c714c38bf12" // Security groups ] tags { Name = "hello-terraform-demo" } }
  • 22. Mais funcionalidades $ MÓDULOS - https://registry.terraform.io module "rds" { source = "terraform-aws-modules/rds/aws" version = "1.22.0" # insert the 10 required variables here }
  • 23. Mais funcionalidades $ MÓDULOS module "rds" { source = "terraform-aws-modules/rds/aws" version = "1.22.0" # insert the 10 required variables here } Sources: local, regitry (registry.terraform.io), git
  • 24. Mais funcionalidades $ ESTADO REMOTO (Usando em time) terraform { backend "s3" { bucket = "mybucket" key = "path/to/my/key" region = "us-east-1" } }
  • 25. Links úteis • Terraform Module Registry (Módulos reutilizáveis) • Confluence: Tags & Labels (Tags obrigatórias) • Repository Structure (Best practices)