From f518b90c6b02a603b14b39ab3f44f9bb1a7d30b6 Mon Sep 17 00:00:00 2001
From: Jiang Yi Tao <jiangyt.cn@gmail.com>
Date: Mon, 29 Apr 2019 13:58:20 +0800
Subject: [PATCH] associate fips for masters with no etcd (#4657)

---
 contrib/terraform/openstack/kubespray.tf                 | 3 ++-
 contrib/terraform/openstack/modules/compute/main.tf      | 6 ++++++
 contrib/terraform/openstack/modules/compute/variables.tf | 4 ++++
 contrib/terraform/openstack/modules/ips/main.tf          | 6 ++++++
 contrib/terraform/openstack/modules/ips/outputs.tf       | 4 ++++
 5 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/contrib/terraform/openstack/kubespray.tf b/contrib/terraform/openstack/kubespray.tf
index 278b8152b..b53cccab7 100644
--- a/contrib/terraform/openstack/kubespray.tf
+++ b/contrib/terraform/openstack/kubespray.tf
@@ -53,6 +53,7 @@ module "compute" {
   network_name                                 = "${var.network_name}"
   flavor_bastion                               = "${var.flavor_bastion}"
   k8s_master_fips                              = "${module.ips.k8s_master_fips}"
+  k8s_master_no_etcd_fips                      = "${module.ips.k8s_master_no_etcd_fips}"
   k8s_node_fips                                = "${module.ips.k8s_node_fips}"
   bastion_fips                                 = "${module.ips.bastion_fips}"
   bastion_allowed_remote_ips                   = "${var.bastion_allowed_remote_ips}"
@@ -79,7 +80,7 @@ output "router_id" {
 }
 
 output "k8s_master_fips" {
-  value = "${module.ips.k8s_master_fips}"
+  value = "${concat(module.ips.k8s_master_fips, module.ips.k8s_master_no_etcd_fips)}"
 }
 
 output "k8s_node_fips" {
diff --git a/contrib/terraform/openstack/modules/compute/main.tf b/contrib/terraform/openstack/modules/compute/main.tf
index 9e35d4d7c..c745021a8 100644
--- a/contrib/terraform/openstack/modules/compute/main.tf
+++ b/contrib/terraform/openstack/modules/compute/main.tf
@@ -296,6 +296,12 @@ resource "openstack_compute_floatingip_associate_v2" "k8s_master" {
   floating_ip = "${var.k8s_master_fips[count.index]}"
 }
 
+resource "openstack_compute_floatingip_associate_v2" "k8s_master_no_etcd" {
+  count       = "${var.number_of_k8s_masters_no_etcd}"
+  instance_id = "${element(openstack_compute_instance_v2.k8s_master_no_etcd.*.id, count.index)}"
+  floating_ip = "${var.k8s_master_no_etcd_fips[count.index]}"
+}
+
 resource "openstack_compute_floatingip_associate_v2" "k8s_node" {
   count       = "${var.number_of_k8s_nodes}"
   floating_ip = "${var.k8s_node_fips[count.index]}"
diff --git a/contrib/terraform/openstack/modules/compute/variables.tf b/contrib/terraform/openstack/modules/compute/variables.tf
index dfb438128..004342dc4 100644
--- a/contrib/terraform/openstack/modules/compute/variables.tf
+++ b/contrib/terraform/openstack/modules/compute/variables.tf
@@ -54,6 +54,10 @@ variable "k8s_master_fips" {
   type = "list"
 }
 
+variable "k8s_master_no_etcd_fips" {
+  type = "list"
+}
+
 variable "k8s_node_fips" {
   type = "list"
 }
diff --git a/contrib/terraform/openstack/modules/ips/main.tf b/contrib/terraform/openstack/modules/ips/main.tf
index 43d543307..d3b06609e 100644
--- a/contrib/terraform/openstack/modules/ips/main.tf
+++ b/contrib/terraform/openstack/modules/ips/main.tf
@@ -10,6 +10,12 @@ resource "openstack_networking_floatingip_v2" "k8s_master" {
   depends_on = ["null_resource.dummy_dependency"]
 }
 
+resource "openstack_networking_floatingip_v2" "k8s_master_no_etcd" {
+  count      = "${var.number_of_k8s_masters_no_etcd}"
+  pool       = "${var.floatingip_pool}"
+  depends_on = ["null_resource.dummy_dependency"]
+}
+
 resource "openstack_networking_floatingip_v2" "k8s_node" {
   count      = "${var.number_of_k8s_nodes}"
   pool       = "${var.floatingip_pool}"
diff --git a/contrib/terraform/openstack/modules/ips/outputs.tf b/contrib/terraform/openstack/modules/ips/outputs.tf
index 10bea5519..1b2ed6aa2 100644
--- a/contrib/terraform/openstack/modules/ips/outputs.tf
+++ b/contrib/terraform/openstack/modules/ips/outputs.tf
@@ -2,6 +2,10 @@ output "k8s_master_fips" {
   value = ["${openstack_networking_floatingip_v2.k8s_master.*.address}"]
 }
 
+output "k8s_master_no_etcd_fips" {
+  value = ["${openstack_networking_floatingip_v2.k8s_master_no_etcd.*.address}"]
+}
+
 output "k8s_node_fips" {
   value = ["${openstack_networking_floatingip_v2.k8s_node.*.address}"]
 }
-- 
GitLab