Slide 1

Slide 1 text

container-solutions.com | @containersoluti Defining your infrastructure with code with Terraform by Carlos León

Slide 2

Slide 2 text

container-solutions.com | @containersoluti Software Engineer @ Container Solutions Twitter: @mongrelion Github: @mongrelion [email protected] 2

Slide 3

Slide 3 text

container-solutions.com | @containersoluti What is Terraform? 3 ● Infrastructure as Code ● Execution Plans ● Resource Graph ● Change Automation

Slide 4

Slide 4 text

container-solutions.com | @containersoluti What is Terraform? 4 ● Infrastructure as Code ● Execution Plans ● Resource Graph ● Change Automation

Slide 5

Slide 5 text

container-solutions.com | @containersoluti What is Terraform? 5 ● Infrastructure as Code ● Execution Plans ● Resource Graph ● Change Automation

Slide 6

Slide 6 text

container-solutions.com | @containersoluti What is Terraform? 6 ● Infrastructure as Code ● Execution Plans ● Resource Graph ● Change Automation

Slide 7

Slide 7 text

container-solutions.com | @containersoluti What is Terraform? 7 ● Infrastructure as Code ● Execution Plans ● Resource Graph ● Change Automation

Slide 8

Slide 8 text

container-solutions.com | @containersoluti The basics 8

Slide 9

Slide 9 text

container-solutions.com | @containersoluti Example #1 - config.tf 9

Slide 10

Slide 10 text

container-solutions.com | @containersoluti Example #1 - plan 1 0

Slide 11

Slide 11 text

container-solutions.com | @containersoluti Example #1 - apply 1 1

Slide 12

Slide 12 text

container-solutions.com | @containersoluti Example #1 - show 1 2

Slide 13

Slide 13 text

container-solutions.com | @containersoluti Example #1 - terraform.tfstate 1 3

Slide 14

Slide 14 text

container-solutions.com | @containersoluti Resource Graph 1 4

Slide 15

Slide 15 text

container-solutions.com | @containersoluti Example #2 - config.tf 1 5

Slide 16

Slide 16 text

container-solutions.com | @containersoluti Example #2 - config.tf 1 6

Slide 17

Slide 17 text

container-solutions.com | @containersoluti Example #2 - config.tf 1 7

Slide 18

Slide 18 text

container-solutions.com | @containersoluti Example #2 - config.tf 1 8

Slide 19

Slide 19 text

container-solutions.com | @containersoluti Example #2 - config.tf 1 9

Slide 20

Slide 20 text

container-solutions.com | @containersoluti Example #2 - plan 2 0

Slide 21

Slide 21 text

container-solutions.com | @containersoluti What about changes in the infrastructure? 2 1

Slide 22

Slide 22 text

container-solutions.com | @containersoluti Modules 2 2

Slide 23

Slide 23 text

container-solutions.com | @containersoluti 3rd party providers 2 3 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud

Slide 24

Slide 24 text

container-solutions.com | @containersoluti 3rd party providers 2 4 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud ● AWS instances ● S3 buckets ● Route53 records

Slide 25

Slide 25 text

container-solutions.com | @containersoluti 3rd party providers 2 5 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud ● AWS instances ● S3 buckets ● Route53 records ● Compute instances ● Networking resources ● Load Balancers

Slide 26

Slide 26 text

container-solutions.com | @containersoluti 3rd party providers 2 6 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud ● AWS instances ● S3 buckets ● Route53 records ● Images ● Containers ● Compute instances ● Networking resources ● Load Balancers

Slide 27

Slide 27 text

container-solutions.com | @containersoluti 3rd party providers 2 7 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud ● AWS instances ● S3 buckets ● Route53 records ● Images ● Containers ● Compute instances ● Networking resources ● Load Balancers ● Compute instances ● Database instances ● Networks

Slide 28

Slide 28 text

container-solutions.com | @containersoluti 3rd party providers 2 8 ● Heroku ● Mailgun ● MySQL ● OpenStack ● Packet ● PostgreSQL ● Rundeck ● StatusCake ● Template ● Terraform ● TLS ● VMware vCloud Director ● VMware vSphere ● Atlas ● AWS ● Azure (Service Management) ● Azure (Resource Manager) ● Chef ● CloudFlare ● CloudStack ● Consul ● DigitalOcean ● DNSMadeEasy ● DNSimple ● Docker ● Dyn ● Google Cloud ● AWS instances ● S3 buckets ● Route53 records ● Images ● Containers ● Compute instances ● Networking resources ● Load Balancers ● Compute instances ● Database instances ● Networks Yours?

Slide 29

Slide 29 text

container-solutions.com | @containersoluti A word about the documentation 2 9

Slide 30

Slide 30 text

container-solutions.com | @containersoluti Q&A 3 0

Slide 31

Slide 31 text

container-solutions.com | @containersoluti Resources & Credits 3 1 ● Terraform example files ➔ https://github.com/hashicorp/terraform/tree/master/examples ➔ https://github.com/terraform-community-modules/tf_aws_ec2_instance/blob/master/main.tf ● Community modules https://github.com/terraform-community-modules ● How to set up Mesos on Google Cloud with Terraform ● Terraforming a Nomad cluster ● Write your own Terraform provider: Part 1 ● Icons: code by Brennan Novak from the Noun Project

Slide 32

Slide 32 text

container-solutions.com | @containersoluti Sponsors 3 2 Special thanks to my sponsors who gave me the opportunity to work on Terraform in a very broad scope.