Skip to content
Snippets Groups Projects
main.tf 1.76 KiB
Newer Older
terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.42.0"
    }
  }
}

# is created as a datasource this module and called in root module
variable "public_network_name" {type = string}
Ryan Randles Jones's avatar
Ryan Randles Jones committed
variable "admin_state_up" {}
variable "enable_dhcp" {}
data "openstack_networking_network_v2" "public_network" {name = var.public_network_name}

# creates dmznet
resource "openstack_networking_network_v2" "external_network" {
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  name           = "${var.name}net"
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  admin_state_up = var.admin_state_up
}

resource "openstack_networking_subnet_v2" "external_subnet" {
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  name            = "${var.name}subnet"
  network_id      = openstack_networking_network_v2.external_network.id
  cidr            = "192.168.100.0/24"
  ip_version      = 4
  dns_nameservers = ["172.20.0.137", "172.20.0.3", "8.8.8.8"]
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  enable_dhcp     = var.enable_dhcp
# defines the router dmzrouter using floating ip defined in datasource above to create the external network id
resource "openstack_networking_router_v2" "router" {
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  name                = "${var.name}router"
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  admin_state_up      = var.admin_state_up
  external_network_id = data.openstack_networking_network_v2.public_network.id
}

resource "openstack_networking_router_interface_v2" "router" {
  router_id = openstack_networking_router_v2.router.id
  subnet_id = openstack_networking_subnet_v2.external_subnet.id
}
output "id" {
    value = openstack_networking_network_v2.external_network.id
    depends_on = [openstack_networking_subnet_v2.external_subnet]
Ryan Randles Jones's avatar
Ryan Randles Jones committed
output "external_subnet_id" {
    value = openstack_networking_subnet_v2.external_subnet.id
output "router_id" {
Ryan Randles Jones's avatar
Ryan Randles Jones committed
    value = openstack_networking_router_v2.router.id