Top Banner
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Developing a (VCD) Terraform Provider Brett Mack Nicki Watt @phpops @techiewatt 28/01/2016 1
36

London Hashicorp Meetup (8th Mar 2016)

Apr 16, 2017

Download

Technology

Brett Mack
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Developing a (VCD) Terraform Provider

Brett Mack Nicki Watt @phpops @techiewatt

28/01/2016

1

Page 2: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2

Who are we?

• Hands on consultants

• Worked with a variety of clients using various HashiCorp products

• HashiCorp partner

Page 3: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3

https://www.opencredo.com/2015/08/10/boot-my-secure-government-cloud

Page 4: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4

Agenda

• Terraform Introduction

• The VCD Terraform provider approach and lessons learned

• Conclusion

Page 5: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The

Super Quick

5

Terraform Introduction^

Page 6: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 6

Creates, manages, and manipulates infrastructure resources.

Page 7: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7

Multiple Infrastructure Providers - IAAS, PAAS, SAAS

Page 8: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8

Page 9: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9

Page 10: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 10

Developing a (VCD) Terraform provider

Page 11: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 11

What is a Terraform Provider Plugin?

Page 12: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 12

Atlas DNSMadeEasy PowerDNS

AWS Docker Rundeck

Azure Dyn StatusCake

CloudFlare Google Cloud Template

CloudStack Heroku Terraform

Consul Mailgun TLS

Datadog OpenStack VMware vCloud Director

DigitalOcean Packet VMware vSphere

Page 13: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 13

Atlas DNSMadeEasy PowerDNS

AWS Docker Rundeck

Azure Dyn StatusCake

CloudFlare Google Cloud Template

CloudStack Heroku Terraform

Consul Mailgun TLS

Datadog OpenStack VMware vCloud Director

DigitalOcean Packet VMware vSphere

Page 14: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 14

Define what you want to control with Terraform

Page 15: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

vCloud Director

15

Edge Gateway

Internal Network

Destination NAT Source NATFirewall Rules

VApp VApp

Page 16: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

vCloud Director

16

Edge Gateway

Internal Network

Destination NAT Source NATFirewall Rules

VApp VApp

Page 17: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 17

Core Terraform Provider Plugin Concepts

Page 18: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 18

Provider

Page 19: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 19

Provider

Resource

Page 20: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 20

Resource

Schema

Provider

Page 21: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Plugin

21

Resource

Schema

Provider

Page 22: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 22

provider "vcd" { …}

resource “vcd_vapp” “web” …}

vms.tf

VCD Provider

Terraform launches provider binary

Preferred method of communicationStarts listeningAddress given back to Terraform

Page 23: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 23

How do these concepts map to VCD?

Page 24: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 24

vCloud DirectorEdge Gateway

VDC NetworkDestinati Source Firewall

VApp VApp

Plugin

Details to establish connection

Individual componentswhich can be controlled

Contractdefining rules

when interactingwith resources

Page 25: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 25

Schema

Provider

userpasswordorgurlvdc

Page 26: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 26

Schemauser

ValueType

Flags

Description

Default

Computed

Required

Optional

ForceNew

Page 27: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 27

Schemauser

ValueType

Flags

Description

Default

Computed

Required

Optional

ValueType: TypeStringDescription: vCD UsernameRequired: True

Computed

ForceNew

Page 28: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 28

Resource

Provider NetworkVAppFirewall RulesDNATSNAT

Page 29: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 29

Resource

CreateReadUpdateDelete

Page 30: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 30

Resource

CreateReadUpdateDeleteExists

Page 31: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 31

Defining the Provider in Go

Page 32: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 32

func Provider() terraform.ResourceProvider { return &schema.Provider{ Schema: map[string]*schema.Schema{ "user": &schema.Schema{ Type: schema.TypeString, Required: true, Description: “vCloud Director Username.", }, "password": &schema.Schema{ Type: schema.TypeString, Required: true, Description: “vCloud Director Password.", }, …

provider.go

Page 33: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 33

func Provider() terraform.ResourceProvider { return &schema.Provider{ Schema: …,

ResourcesMap: map[string]*schema.Resource{ "vcd_network": resourceVcdNetwork(), "vcd_vapp": resourceVcdVApp(), "vcd_firewall_rules": resourceVcdFirewallRules(), "vcd_dnat": resourceVcdDNAT(), "vcd_snat": resourceVcdSNAT(),

},}

provider.go

Page 34: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 34

Issues we encountered

Page 35: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 35

Conclusion

Page 36: London Hashicorp Meetup (8th Mar 2016)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 36

Thanks Questions