Skip to content

Instantly share code, notes, and snippets.

@metahertz
Created March 27, 2015 12:36
Show Gist options
  • Save metahertz/8528cca20825fd3d6db7 to your computer and use it in GitHub Desktop.
Save metahertz/8528cca20825fd3d6db7 to your computer and use it in GitHub Desktop.
Demo2 Openstack terraform configuration http://www.matt-j.co.uk/?p=408
# Testing the OpenStack provider from merge of
# https://github.com/hashicorp/terraform/pull/924
provider "openstack" {
user_name = "<<USER_INPUT_NEEDED>>"
tenant_name = "<<USER_INPUT_NEEDED>>"
auth_url = "<<USER_INPUT_NEEDED>>"
password = "<<USER_INPUT_NEEDED>>"
}
#
# Create a new keypair in our openstack tenant
#
resource "openstack_compute_keypair_v2" "keypair1" {
name = "tf-keypair-1"
region = ""
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRjB9O5zbl82XMyt0Lt2VGuap5fFo4F6mTbmNhHI18JTd816vLl5Gl3VptHj1BacLkGtlNpv8V9zF+r8t2uo1hOjexnWqWKigy7yb5mvNYNwLiApxxdXBbJsDWOvlfRpWx3pw2Zv+BkAAEYrftCmdcg8Ax0JhzepRIHVutY/ZefxvU1T2q8tQjLeEnFvOVZgccDivlU2Alv/hw0WYwPOBANwMyqMaZCzZG+h3U+XK22zwKQVLempFBEZkVGr7Tkfp4gyrM1GdDGOKffmRMnFL+k250SDZSUT1lQblW+Q8wRJat3s8JOHf8hYgDxzsEEK2yA3JT+fOW8TXQJiaTermT"
}
#
# Create a security group
#
resource "openstack_compute_secgroup_v2" "tf_sec_1" {
region = ""
name = "tf_sec_1"
description = "Security Group Via Terraform"
rule {
from_port = 22
to_port = 22
ip_protocol = "tcp"
cidr = "0.0.0.0/0"
}
rule {
from_port = 1
to_port = 65535
ip_protocol = "tcp"
self = true
}
rule {
from_port = 443
to_port = 443
ip_protocol = "tcp"
cidr = "0.0.0.0/0"
}
}
#
# Create a Network
#
resource "openstack_networking_network_v2" "tf_network" {
region = ""
name = "tf_network"
admin_state_up = "true"
}
#
# Create a subnet in our new network
# Notice here we use a TF variable for the name of our network above.
#
resource "openstack_networking_subnet_v2" "tf_net_sub1" {
region = ""
network_id = "${openstack_networking_network_v2.tf_network.id}"
cidr = "192.168.1.0/24"
ip_version = 4
}
#
# Create a router for our network
#
resource "openstack_networking_router_v2" "tf_router1" {
region = ""
name = "tf_router1"
admin_state_up = "true"
external_gateway = "<<USER_INPUT_NEEDED>>"
}
#
# Attach the Router to our Network via an Interface
#
resource "openstack_networking_router_interface_v2" "tf_rtr_if_1" {
region = ""
router_id = "${openstack_networking_router_v2.tf_router1.id}"
subnet_id = "${openstack_networking_subnet_v2.tf_net_sub1.id}"
}
#
# Create some Openstack Floating IP's for our VM's
#
resource "openstack_compute_floatingip_v2" "fip_1" {
region = ""
pool = "<<USER_INPUT_NEEDED>>"
}
resource "openstack_compute_floatingip_v2" "fip_2" {
region = ""
pool = "<<USER_INPUT_NEEDED>>"
}
#
# Create a VM Instance on CentOS7 Image by name
#
resource "openstack_compute_instance_v2" "instance_1" {
region = ""
name = "tf_test_1"
image_name = "<<USER_INPUT_NEEDED>>"
flavor_name = "<<USER_INPUT_NEEDED>>"
key_pair = "tf-keypair-1"
security_groups = ["tf_sec_1"]
metadata {
demo = "metadata"
}
network {
uuid = "${openstack_networking_network_v2.tf_network.id}"
fixed_ip = "192.168.1.100"
}
floating_ip = "${openstack_compute_floatingip_v2.fip_1.address}"
}
#
# Create a VM Instance on CentOS7 Image by ID
#
resource "openstack_compute_instance_v2" "instance_2" {
region = ""
name = "tf_test_2"
image_id = "<<USER_INPUT_NEEDED>>"
flavor_name = "<<USER_INPUT_NEEDED>>"
key_pair = "tf-keypair-1"
security_groups = ["tf_sec_1"]
metadata {
demo = "metadata"
}
network {
uuid = "${openstack_networking_network_v2.tf_network.id}"
fixed_ip = "192.168.1.101"
}
floating_ip = "${openstack_compute_floatingip_v2.fip_2.address}"
}
#
# Create a VM Instance on CentOS7 Image by ID
#
resource "openstack_compute_instance_v2" "instance_3" {
region = ""
name = "tf_test_3"
image_id = "<<USER_INPUT_NEEDED>>"
flavor_name = "<<USER_INPUT_NEEDED>>"
key_pair = "tf-keypair-1"
security_groups = ["tf_sec_1"]
metadata {
demo = "metadata"
}
network {
uuid = "${openstack_networking_network_v2.tf_network.id}"
fixed_ip = "192.168.1.102"
}
}
#
# Create a LB Monitor, Pool and VIP
#
resource "openstack_lb_monitor_v1" "tf_lb_mon_1" {
region = ""
type = "PING"
delay = 30
timeout = 5
max_retries = 3
admin_state_up = "true"
}
resource "openstack_lb_pool_v1" "tf_lb_pl_1" {
region = ""
name = "tf_lb_pl_1"
protocol = "HTTP"
subnet_id = "${openstack_networking_subnet_v2.tf_net_sub1.id}"
lb_method = "ROUND_ROBIN"
monitor_ids = ["${openstack_lb_monitor_v1.tf_lb_mon_1.id}"]
member {
address = "192.168.1.20"
region = ""
port = 80
admin_state_up = "true"
}
}
resource "openstack_lb_vip_v1" "tf_lb_vip_1" {
region = ""
name = "tf_lb_vip_1"
subnet_id = "${openstack_networking_subnet_v2.tf_net_sub1.id}"
protocol = "HTTP"
port = 80
pool_id = "${openstack_lb_pool_v1.tf_lb_pl_1.id}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment