Slide 1

Slide 1 text

Terraform Workshop Orlando Del Aguila Hash U

Slide 2

Slide 2 text

@orlando @eatcodetravel @eatcodetravel eatcodetravel.com

Slide 3

Slide 3 text

www.hashlabs.com

Slide 4

Slide 4 text

Overview

Slide 5

Slide 5 text

Commands

Slide 6

Slide 6 text

1. Init 2. Version 3. Get 4. Plan 5. Apply

Slide 7

Slide 7 text

Providers

Slide 8

Slide 8 text

Terraform / Provider provider "heroku"{ email = "[email protected]" api_key = "my api key" }

Slide 9

Slide 9 text

Resources

Slide 10

Slide 10 text

Terraform / Resources resource "heroku_app" "example" { name = "my-super-heroku-app" region = "us" }

Slide 11

Slide 11 text

Data Sources

Slide 12

Slide 12 text

Terraform / Data sources data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-*"] } } resource "aws_instance" "example" { ami = "${data.aws_ami.ubuntu.id}" instance_type = "t2.micro" }

Slide 13

Slide 13 text

Variables

Slide 14

Slide 14 text

Terraform / Variables variable “app_name" { default = “my-super-app-tf“ } 
 variable "heroku" { default = { email = “[email protected]" api_key = “123123" } } variable "list" { default = [“first”,”second”] }

Slide 15

Slide 15 text

Variable Interpolation

Slide 16

Slide 16 text

Terraform / Variables data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-*"] } } resource "aws_instance" "example" { ami = "${data.aws_ami.ubuntu.id}" instance_type = "t2.micro" }

Slide 17

Slide 17 text

Interpolation functions

Slide 18

Slide 18 text

Terraform / Functions resource "heroku_app" "example" { name = "${uuid()}" region = "us" }

Slide 19

Slide 19 text

Output Variables

Slide 20

Slide 20 text

Terraform / Functions output "git_url" "example" { value = "${heroku_app.example.git_url}" }

Slide 21

Slide 21 text

Modules

Slide 22

Slide 22 text

Terraform / Modules variable "app_name" {} module "app"{ source = "./heroku_app" app_name = "${var.app_name}" region = "us" }

Slide 23

Slide 23 text

State

Slide 24

Slide 24 text

Terraform / Modules https://gist.github.com/orlando/ 2fe57ff440d88655732008d731e3be02

Slide 25

Slide 25 text

Hands on

Slide 26

Slide 26 text

1. Install Terraform 2. Clone repository 3. Heroku account 4. Heroku API key 5. Terraform.tfvars