Intro to Terraform workshop I gave for the Hacker Garage Community day 2017
TerraformWorkshopOrlando Del AguilaHash U
View Slide
@orlando@eatcodetravel@eatcodetraveleatcodetravel.com
www.hashlabs.com
Overview
Commands
1. Init2. Version3. Get4. Plan5. Apply
Providers
Terraform / Providerprovider "heroku"{email = "[email protected]"api_key = "my api key"}
Resources
Terraform / Resourcesresource "heroku_app" "example" {name = "my-super-heroku-app"region = "us"}
Data Sources
Terraform / Data sourcesdata "aws_ami" "ubuntu" {most_recent = truefilter {name = "name"values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-*"]}}resource "aws_instance" "example" {ami = "${data.aws_ami.ubuntu.id}"instance_type = "t2.micro"}
Variables
Terraform / Variablesvariable “app_name" {default = “my-super-app-tf“} variable "heroku" {default = {email = “[email protected]"api_key = “123123"}}variable "list" {default = [“first”,”second”]}
Variable Interpolation
Terraform / Variablesdata "aws_ami" "ubuntu" {most_recent = truefilter {name = "name"values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-*"]}}resource "aws_instance" "example" {ami = "${data.aws_ami.ubuntu.id}"instance_type = "t2.micro"}
Interpolation functions
Terraform / Functionsresource "heroku_app" "example" {name = "${uuid()}"region = "us"}
Output Variables
Terraform / Functionsoutput "git_url" "example" {value = "${heroku_app.example.git_url}"}
Modules
Terraform / Modulesvariable "app_name" {}module "app"{source = "./heroku_app"app_name = "${var.app_name}"region = "us"}
State
Terraform / Moduleshttps://gist.github.com/orlando/2fe57ff440d88655732008d731e3be02
Hands on
1. Install Terraform2. Clone repository3. Heroku account4. Heroku API key5. Terraform.tfvars