Terraform for the Largely...

60
@grahamlyons TERRAFORM FOR THE LARGELY UNINITIATED

Transcript of Terraform for the Largely...

Page 1: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

TERRAFORM FOR THE LARGELY UNINITIATED

Page 2: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 3: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

INFRASTRUCTURE AS CODE

Page 4: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

$$$!

Page 5: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 6: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 7: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 8: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 9: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 10: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 11: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 12: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 13: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

BOB

Page 14: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

ALICE

Page 15: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 16: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

BARRY

Page 17: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 18: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 19: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 20: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

BARRY

Page 21: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 22: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

CREATE S3 BUCKETS

Page 23: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 24: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 25: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 26: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 27: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 28: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 29: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

HCL

Page 30: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 31: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

DECLARATIVE?

Page 32: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

IMPERATIVE SHOPPING LIST

1. DRIVE ON THE A3 FOR 4.5 MINUTES UNTIL YOU ARRIVE AT LIDL

2. PARK THE CAR IN THE LEFTMOST SPACE AS CLOSE TO THE BUILDING AS POSSIBLE

3. ENTER THE SHOP, OBTAIN A TROLLEY AND WALK UP AISLE ONE

4. 3 METRES ALONG THE AISLE STOP AND PUT 3 CUCUMBERS FROM THE SHELF INTO THE TROLLEY

5. CONTINUE ANOTHER 1.5 METRES ALONG THE AISLE, TAKE 2 CAULIFLOWER FROM THE SHELF AND PUT THEM INTO THE TROLLEY

Page 33: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

DECLARATIVE SHOPPING LIST

• DOM PERIGNON 2006

• BAGUETTE

• CAMEMBERT

Page 34: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

FOR REAL

Page 35: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 36: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 37: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 38: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 39: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

INITIALISE

Page 40: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

CREDENTIALS

Page 41: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

PLAN

Page 42: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

APPLY?

Page 43: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

APPLY

Page 44: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

SAVE PLAN

$ terraform plan -var server_name=boo-far -out changed-name.plan

Page 45: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 46: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

STATE

Page 47: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

BARRY

Page 48: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 49: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 50: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

GRAPH

Page 51: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

MODULES

Page 52: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 53: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 54: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 55: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

Page 56: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

BARRY

Page 57: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

DATA SOURCES

Page 58: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

OTHER THINGS

MORE COMPLEX HCL: COUNT (LOOPS), CONDITIONALS, BUILT-IN FUNCTIONS

PROVISIONERS: SSH, CHEF

TERRAFORM 0.12…

Page 59: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons

MORE ADVANCED

REMOTE STATE

IMPORTING RESOURCES

MOVING RESOURCES

Page 60: Terraform for the Largely Uninitiatedcontinuouslifecycle.london/wp-content/uploads/2018/12/Graham-Lyo… · $ terraform plan -var server_name=boo-far -out changed-name.plan. @grahamlyons.

@grahamlyons