From 0c2fbcd59cd352e3c0e4dfdf4e7836fb22529742 Mon Sep 17 00:00:00 2001
From: Rob Kooper <kooper@illinois.edu>
Date: Mon, 24 Oct 2022 11:03:24 -0500
Subject: [PATCH] add availability zone

---
 CHANGELOG.md                        |  5 +++++
 terraform/modules/rke1/nodes.tf     | 35 ++++++++++++++++-------------
 terraform/modules/rke1/variables.tf |  6 +++++
 3 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index beee2cd..436fa5e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
 
 
+## 1.2.2 - 2022-10-24
+
+### Changed
+- compute nodes in rke1 now set availability zone (default nova), availabilty zone is ignored for existing nodes.
+
 ## 1.2.1 - 2022-10-13
 
 ### Changed
diff --git a/terraform/modules/rke1/nodes.tf b/terraform/modules/rke1/nodes.tf
index 78b4143..1718e23 100644
--- a/terraform/modules/rke1/nodes.tf
+++ b/terraform/modules/rke1/nodes.tf
@@ -1,18 +1,19 @@
 locals {
-  controlplane = [for l in range(var.controlplane_count): var.old_hostnames ? format("%s-controlplane-%d", var.cluster_name, l) : format("%s-controlplane-%d", var.cluster_name, l + 1)]
-  worker       = [for l in range(var.worker_count): var.old_hostnames ? format("%s-worker-%d", var.cluster_name, l) : format("%s-worker-%02d", var.cluster_name, l + 1)]
+  controlplane = [for l in range(var.controlplane_count) : var.old_hostnames ? format("%s-controlplane-%d", var.cluster_name, l) : format("%s-controlplane-%d", var.cluster_name, l + 1)]
+  worker       = [for l in range(var.worker_count) : var.old_hostnames ? format("%s-worker-%d", var.cluster_name, l) : format("%s-worker-%02d", var.cluster_name, l + 1)]
 }
 
 # ----------------------------------------------------------------------
 # control-plane nodes
 # ----------------------------------------------------------------------
 resource "openstack_compute_instance_v2" "controlplane" {
-  count        = var.controlplane_count
-  name         = local.controlplane[count.index]
-  image_name   = var.os
-  flavor_name  = var.controlplane_flavor
-  key_pair     = openstack_compute_keypair_v2.key.name
-  config_drive = false
+  count             = var.controlplane_count
+  name              = local.controlplane[count.index]
+  image_name        = var.os
+  availability_zone = var.openstack_zone
+  flavor_name       = var.controlplane_flavor
+  key_pair          = openstack_compute_keypair_v2.key.name
+  config_drive      = false
 
   depends_on = [
     openstack_networking_secgroup_rule_v2.same_security_group_ingress_tcp,
@@ -52,7 +53,8 @@ resource "openstack_compute_instance_v2" "controlplane" {
     ignore_changes = [
       key_pair,
       block_device,
-      user_data
+      user_data,
+      availability_zone
     ]
   }
 }
@@ -61,11 +63,13 @@ resource "openstack_compute_instance_v2" "controlplane" {
 # worker nodes
 # ----------------------------------------------------------------------
 resource "openstack_compute_instance_v2" "worker" {
-  count        = var.worker_count
-  name         = local.worker[count.index]
-  flavor_name  = var.worker_flavor
-  key_pair     = local.key
-  config_drive = false
+  count             = var.worker_count
+  name              = local.worker[count.index]
+  image_name        = var.os
+  availability_zone = var.openstack_zone
+  flavor_name       = var.worker_flavor
+  key_pair          = local.key
+  config_drive      = false
 
   depends_on = [
     openstack_networking_secgroup_rule_v2.same_security_group_ingress_tcp
@@ -101,7 +105,8 @@ resource "openstack_compute_instance_v2" "worker" {
     ignore_changes = [
       key_pair,
       block_device,
-      user_data
+      user_data,
+      availability_zone
     ]
   }
 }
diff --git a/terraform/modules/rke1/variables.tf b/terraform/modules/rke1/variables.tf
index 0761c98..1f4bbd2 100644
--- a/terraform/modules/rke1/variables.tf
+++ b/terraform/modules/rke1/variables.tf
@@ -125,6 +125,12 @@ variable "openstack_ssh_key" {
   default     = ""
 }
 
+variable "openstack_zone" {
+  type        = string
+  description = "default zone to use for openstack nodes"
+  default     = "nova"
+}
+
 # ----------------------------------------------------------------------
 # OPENSTACK NODES
 # ----------------------------------------------------------------------
-- 
GitLab