From 44a9cd3839060052ca7ee5a585fd308ad0124a5f Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Wed, 5 Dec 2018 21:21:32 +0000 Subject: [PATCH] openstack: Support setting network UUID via terraform variable. Technically, network names in OpenStack are not unique. We would expect almost every deployment to be using a unique name for its external network, though. In the rare case where you must disambiguate networks, it's possible to specify the UUID via a terraform variable. $ env TF_VAR_openstack_external_network_id="6a32627e-d98d-40d8-9324-5da7cf1452fc" \ > bin/openshift-install create cluster --- data/data/openstack/main.tf | 13 +++++++------ data/data/openstack/topology/private-network.tf | 5 +++-- data/data/openstack/topology/variables.tf | 6 ++++++ data/data/openstack/variables-openstack.tf | 14 +++++++++++++- docs/user/openstack/README.md | 12 ++++++++++++ pkg/types/openstack/platform.go | 2 +- 6 files changed, 42 insertions(+), 10 deletions(-) diff --git a/data/data/openstack/main.tf b/data/data/openstack/main.tf index c0b7984d866..20858b19b5e 100644 --- a/data/data/openstack/main.tf +++ b/data/data/openstack/main.tf @@ -68,12 +68,13 @@ module "masters" { module "topology" { source = "./topology" - cidr_block = "${var.machine_cidr}" - cluster_id = "${var.cluster_id}" - external_network = "${var.openstack_external_network}" - masters_count = "${var.master_count}" - lb_floating_ip = "${var.openstack_lb_floating_ip}" - trunk_support = "${var.openstack_trunk_support}" + cidr_block = "${var.machine_cidr}" + cluster_id = "${var.cluster_id}" + external_network = "${var.openstack_external_network}" + external_network_id = "${var.openstack_external_network_id}" + masters_count = "${var.master_count}" + lb_floating_ip = "${var.openstack_lb_floating_ip}" + trunk_support = "${var.openstack_trunk_support}" } resource "openstack_objectstorage_container_v1" "container" { diff --git a/data/data/openstack/topology/private-network.tf b/data/data/openstack/topology/private-network.tf index b2a5a8b0dcb..b910e67188b 100644 --- a/data/data/openstack/topology/private-network.tf +++ b/data/data/openstack/topology/private-network.tf @@ -76,8 +76,9 @@ resource "openstack_networking_port_v2" "service_port" { } data "openstack_networking_network_v2" "external_network" { - name = "${var.external_network}" - external = true + name = "${var.external_network}" + network_id = "${var.external_network_id}" + external = true } resource "openstack_networking_floatingip_associate_v2" "service_fip" { diff --git a/data/data/openstack/topology/variables.tf b/data/data/openstack/topology/variables.tf index c91ce4c07d0..0c042914f52 100644 --- a/data/data/openstack/topology/variables.tf +++ b/data/data/openstack/topology/variables.tf @@ -7,6 +7,12 @@ variable "cluster_id" { } variable "external_network" { + description = "Name of the external network providing Floating IP addresses." + type = "string" + default = "" +} + +variable "external_network_id" { description = "UUID of the external network providing Floating IP addresses." type = "string" default = "" diff --git a/data/data/openstack/variables-openstack.tf b/data/data/openstack/variables-openstack.tf index 60e58cb9034..c52e8da8348 100644 --- a/data/data/openstack/variables-openstack.tf +++ b/data/data/openstack/variables-openstack.tf @@ -194,9 +194,21 @@ variable "openstack_external_network" { type = "string" default = "" + description = <-api` +## Disambiguating the External Network + +The installer assumes that the name of the external network is unique. In case +there is more than one network with the same name as the desired external +network, it’s possible to provide a UUID to specify which network should be +used. + +``` +$ env TF_VAR_openstack_external_network_id="6a32627e-d98d-40d8-9324-5da7cf1452fc" \ +> bin/openshift-install create cluster +``` + ## Troubleshooting See the [troubleshooting installer issues in OpenStack](./troubleshooting.md) guide. diff --git a/pkg/types/openstack/platform.go b/pkg/types/openstack/platform.go index 8265375dcf8..2308f0e50b9 100644 --- a/pkg/types/openstack/platform.go +++ b/pkg/types/openstack/platform.go @@ -17,7 +17,7 @@ type Platform struct { Cloud string `json:"cloud"` // ExternalNetwork - // The OpenStack external network to be used for installation. + // The OpenStack external network name to be used for installation. ExternalNetwork string `json:"externalNetwork"` // FlavorName