View markdown source on GitHub

Terraform

Contributors

Questions

Objectives

last_modification Published: Oct 27, 2018
last_modification Last Updated: Mar 1, 2022

Why Terraform


Pets vs Cattle

.pull-left[

.pull-right[

On the left is a very cute cat with big eyes, on the right is a picture of cows.


Terraform

“Infrastructure as Code”


Write: Infrastructure as Code

resource "openstack_compute_instance_v2" "my-server" {
  name            = "my-server"
  image_name      = "CentOS 7"
  flavor_name     = "m1.large"
}

resource "aws_route53_record" "my.server" {
  name    = "my.server.example.org"
  records = ["${openstack_compute_instance_v2.my-server.access_ip_v4}"]
}

Plan: your changes

Text in the terminal showing that an openstack compute keypair my-cloud-key is being created. Plan: 2 to add, 0 to change, 0 to destroy

Speaker Notes

Easy to see which resources need to be recreated, can produce a nice graph of their dependencies.


Create: Reproducible Infrastructure

.image-70[ Graph of requirements showing relationship between provider, instance, and things like the keypair to be added ]

Speaker Notes

This was a fantastically useful feature for UseGalaxy.eu, we transitioned smoothly between two OpenStack clouds because we just could say terraform apply in our new cloud, our entire infrastructure was reproduced.


Manage Many Resources

ACME     Alicloud     Archive    Arukas     AWS     Azure Azure Stack     Bitbucket
Brightbox    CenturyLinkCloud     Chef     Circonus Cloudflare     CloudScale.ch
CloudStack    Cobbler     Consul     Datadog DigitalOcean     DNS     DNSMadeEasy
DNSimple     Docker     Dyn External     F5 BIG-IP     Fastly    FlexibleEngine     GitHub
Gitlab Google Cloud     Grafana     Helm    Heroku     Hetzner Cloud     HTTP
HuaweiCloud     Icinga2     Ignition    InfluxDB     Kubernetes     Librato Linode
Local     Logentries    LogicMonitor     Mailgun     MySQL Netlify     New Relic
Nomad    NS1     Null     Nutanix 1&1     OpenStack     OpenTelekomCloud
OpsGenie     Oracle Cloud Infrastructure     Oracle Cloud Platform Oracle Public
Cloud     OVH     Packet    PagerDuty     Palo Alto Networks     PostgreSQL PowerDNS
ProfitBricks     RabbitMQ    Rancher     Random     RightScale Rundeck     RunScope
Scaleway    SoftLayer     StatusCake     Spotinst TelefonicaOpenCloud     Template
TencentCloud    Terraform     Terraform Enterprise     TLS Triton     UltraDNS
Vault    VMware vCloud Director     VMware NSX-T     VMware vSphere

Speaker Notes

Manage VMs across AWS, GCE, OpenStack, and other Clouds

Manage DNS entries with various providers

Manage Database users/tables/authorizations

Manage GitHub repository permissions


Advanced Features

If you find you love it, many advanced features:


Key Points

Thank you!

This material is the result of a collaborative work. Thanks to the Galaxy Training Network and all the contributors! page logo Tutorial Content is licensed under Creative Commons Attribution 4.0 International License.