From feb9c487b204a54881fc150bac56860ff73fff0d Mon Sep 17 00:00:00 2001
From: Rob Kooper <kooper@illinois.edu>
Date: Thu, 22 Feb 2024 21:39:39 -0600
Subject: [PATCH] remove deprecated code

- removed centos references
- added ability to pick CNI
---
 .gitignore                        |   1 +
 CHANGELOG.md                      |  19 ++++
 terraform/modules/rke1/data.tf    |   9 +-
 terraform/modules/rke1/network.tf |  41 ---------
 terraform/modules/rke1/nodes.tf   | 138 +-----------------------------
 terraform/modules/rke1/outputs.tf |  19 ----
 terraform/modules/rke1/rancher.tf |  58 +------------
 7 files changed, 27 insertions(+), 258 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9337f20..7ed88e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.DS_Store
 .idea
 
 .terraform
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 88de55e..eb99235 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,25 @@ 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/).
 
+## 3.0.0 - 2023-02-22
+
+This removes the old variables for creating machines that were deprecated, and removes references to centos.
+
+### Changed
+- removed all deprecated code, clusters are defined in cluster.json
+
+### Added
+- ability to set network. Default is weave to be compatible with previous version but this should be changed. Weave is EOL 12/31/2024
+  - canal (rancher default)
+  - calico
+  - flannel
+  - weave (deprecated)
+  - none
+- ubuntu is an alias for ubuntu22 as an os type in cluster. This is in preperation for ubuntu 24.04.
+
+### Removed
+- removed centos image reference.
+
 ## 2.4.0 - 2023-12-21
 
 ### Changed
diff --git a/terraform/modules/rke1/data.tf b/terraform/modules/rke1/data.tf
index f57b3ea..2577636 100644
--- a/terraform/modules/rke1/data.tf
+++ b/terraform/modules/rke1/data.tf
@@ -3,13 +3,6 @@ data "openstack_networking_network_v2" "ext_net" {
   name = var.openstack_external_net
 }
 
-# boot image
-# DEPRECATED
-data "openstack_images_image_v2" "boot" {
-  name        = var.os
-  most_recent = true
-}
-
 # openstack project name (bbXX)
 data "openstack_identity_auth_scope_v3" "scope" {
   name = "my_scope"
@@ -17,6 +10,6 @@ data "openstack_identity_auth_scope_v3" "scope" {
 
 data "openstack_images_image_v2" "os_image" {
   for_each    = var.openstack_os_image
-  name        = each.value
+  name        = each.value.imagename
   most_recent = true
 }
diff --git a/terraform/modules/rke1/network.tf b/terraform/modules/rke1/network.tf
index a20e8d2..e4e7e7c 100644
--- a/terraform/modules/rke1/network.tf
+++ b/terraform/modules/rke1/network.tf
@@ -80,44 +80,3 @@ resource "openstack_networking_floatingip_v2" "machine_ip" {
   pool        = data.openstack_networking_network_v2.ext_net.name
   port_id     = openstack_networking_port_v2.machine_ip[each.key].id
 }
-
-# ----------------------------------------------------------------------
-# control plane
-# DEPRECATED
-# ----------------------------------------------------------------------
-
-resource "openstack_networking_port_v2" "controlplane_ip" {
-  count              = var.controlplane_count
-  name               = local.controlplane[count.index]
-  network_id         = openstack_networking_network_v2.cluster_net.id
-  security_group_ids = [openstack_networking_secgroup_v2.cluster_security_group.id]
-  depends_on         = [openstack_networking_router_interface_v2.kube_gateway]
-}
-
-resource "openstack_networking_floatingip_v2" "controlplane_ip" {
-  count       = var.controlplane_count
-  description = format("%s-controlplane-%d", var.cluster_name, count.index + 1)
-  pool        = data.openstack_networking_network_v2.ext_net.name
-  port_id     = element(openstack_networking_port_v2.controlplane_ip.*.id, count.index)
-}
-
-# ----------------------------------------------------------------------
-# worker nodes
-# DEPRECATED
-# ----------------------------------------------------------------------
-
-# create worker ip, this can route the ports for the floating ip as
-# well.
-resource "openstack_networking_port_v2" "worker_ip" {
-  count              = var.worker_count
-  name               = local.worker[count.index]
-  network_id         = openstack_networking_network_v2.cluster_net.id
-  security_group_ids = [openstack_networking_secgroup_v2.cluster_security_group.id]
-  depends_on         = [openstack_networking_router_interface_v2.kube_gateway]
-  dynamic "allowed_address_pairs" {
-    for_each = openstack_networking_port_v2.floating_ip.*.all_fixed_ips.0
-    content {
-      ip_address = allowed_address_pairs.value
-    }
-  }
-}
diff --git a/terraform/modules/rke1/nodes.tf b/terraform/modules/rke1/nodes.tf
index b1c87a9..9c24aa4 100644
--- a/terraform/modules/rke1/nodes.tf
+++ b/terraform/modules/rke1/nodes.tf
@@ -1,9 +1,4 @@
 locals {
-  usernames = {
-    "centos" = "centos",
-    "ubuntu" = "ubuntu"
-  }
-
   node_options = {
     "controlplane" = "--address awspublic --internal-address awslocal --controlplane --etcd",
     "worker"       = "--address awspublic --internal-address awslocal --worker"
@@ -13,10 +8,10 @@ locals {
     for x in var.cluster_machines : [
       for i in range(contains(keys(x), "count") ? x.count : 1) : {
         hostname    = format("%s-%s-%02d", var.cluster_name, x.name, (i + (contains(keys(x), "start_index") ? x.start_index : 1)))
-        username    = lookup(local.usernames, x.os, "UNDEFINED")
-        image_name  = lookup(var.openstack_os_image, x.os, "UNDEFINED")
+        username    = var.openstack_os_image[x.os].username
+        image_name  = var.openstack_os_image[x.os].imagename
         flavor      = try(x.flavor, "gp.medium")
-        image_id    = data.openstack_images_image_v2.os_image[try(x.os, "UNDEFINED")].id
+        image_id    = data.openstack_images_image_v2.os_image[x.os].id
         disk_size   = try(x.disk, 40)
         zone        = try(x.zone, "nova")
         role        = try(x.role, "worker")
@@ -26,11 +21,7 @@ locals {
     ]
   ])
 
-  jumphost = concat([for vm in local.machines : vm.hostname if vm.floating_ip], local.controlplane)[0]
-
-  # DEPRECATED
-  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)]
+  jumphost = [for vm in local.machines : vm.hostname if vm.floating_ip][0]
 }
 
 # ----------------------------------------------------------------------
@@ -88,124 +79,3 @@ resource "openstack_compute_instance_v2" "machine" {
     ]
   }
 }
-
-# ----------------------------------------------------------------------
-# control-plane nodes
-# DEPRECATED
-# ----------------------------------------------------------------------
-resource "openstack_compute_instance_v2" "controlplane" {
-  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,
-  ]
-
-  security_groups = [
-    openstack_networking_secgroup_v2.cluster_security_group.name
-  ]
-
-  #echo "update hosts"
-  #%{ for ip in openstack_networking_port_v2.worker_ip[count.index].all_fixed_ips }
-  #echo "$${ip} $${node_name} $(hostname) $(hostname -f)"  >> /etc/hosts
-  #%{ endfor }
-
-  user_data = base64encode(templatefile("${path.module}/templates/user_data.tmpl", {
-    private_key    = openstack_compute_keypair_v2.key.private_key
-    project_name   = data.openstack_identity_auth_scope_v3.scope.project_name
-    cluster_name   = var.cluster_name
-    username       = "centos"
-    node_name      = local.controlplane[count.index]
-    node_command   = rancher2_cluster.kube.cluster_registration_token.0.node_command
-    node_options   = "--address awspublic --internal-address awslocal --controlplane --etcd"
-    node_labels    = ""
-    ncsa_security  = false
-    taiga_enabled  = var.taiga_enabled
-    install_docker = var.install_docker
-  }))
-
-  block_device {
-    uuid                  = data.openstack_images_image_v2.boot.id
-    source_type           = "image"
-    volume_size           = var.controlplane_disksize
-    destination_type      = "volume"
-    delete_on_termination = true
-  }
-
-  network {
-    port = element(openstack_networking_port_v2.controlplane_ip.*.id, count.index)
-  }
-
-  lifecycle {
-    ignore_changes = [
-      key_pair,
-      block_device,
-      user_data,
-      availability_zone
-    ]
-  }
-}
-
-# ----------------------------------------------------------------------
-# worker nodes
-# DEPRECATED
-# ----------------------------------------------------------------------
-resource "openstack_compute_instance_v2" "worker" {
-  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
-  ]
-
-  security_groups = [
-    openstack_networking_secgroup_v2.cluster_security_group.name
-  ]
-
-  user_data = base64encode(templatefile("${path.module}/templates/user_data.tmpl", {
-    private_key    = openstack_compute_keypair_v2.key.private_key
-    project_name   = data.openstack_identity_auth_scope_v3.scope.project_name
-    cluster_name   = var.cluster_name
-    node_name      = local.worker[count.index]
-    username       = "centos"
-    node_command   = rancher2_cluster.kube.cluster_registration_token.0.node_command
-    node_options   = "--worker"
-    node_labels    = ""
-    ncsa_security  = false
-    taiga_enabled  = var.taiga_enabled
-    install_docker = var.install_docker
-  }))
-
-  block_device {
-    uuid                  = data.openstack_images_image_v2.boot.id
-    source_type           = "image"
-    volume_size           = var.worker_disksize
-    destination_type      = "volume"
-    boot_index            = 0
-    delete_on_termination = true
-  }
-
-  network {
-    port = element(openstack_networking_port_v2.worker_ip.*.id, count.index)
-  }
-
-  lifecycle {
-    ignore_changes = [
-      key_pair,
-      block_device,
-      user_data,
-      availability_zone
-    ]
-  }
-}
-
diff --git a/terraform/modules/rke1/outputs.tf b/terraform/modules/rke1/outputs.tf
index 4e33cd4..2e5a039 100644
--- a/terraform/modules/rke1/outputs.tf
+++ b/terraform/modules/rke1/outputs.tf
@@ -24,15 +24,6 @@ output "ssh_config" {
   value       = <<-EOT
 # Automatically created by terraform
 
-%{~for i, x in openstack_compute_instance_v2.controlplane.*}
-Host ${x.name}
-  HostName ${openstack_networking_floatingip_v2.controlplane_ip[i].address}
-  StrictHostKeyChecking no
-  UserKnownHostsFile=/dev/null
-  IdentityFile ${pathexpand("~/.ssh/${var.cluster_name}.pem")}
-  User centos
-%{~endfor}
-
 %{~for x in [for m in local.machines : m if m.floating_ip]}
 Host ${x.hostname}
   HostName ${openstack_networking_floatingip_v2.machine_ip[x.hostname].address}
@@ -42,16 +33,6 @@ Host ${x.hostname}
   User ${x.username}
 %{~endfor}
 
-%{~for x in openstack_compute_instance_v2.worker.*}
-Host ${x.name}
-  HostName ${x.network[0].fixed_ip_v4}
-  StrictHostKeyChecking no
-  ProxyJump ${local.jumphost}
-  UserKnownHostsFile=/dev/null
-  IdentityFile ${pathexpand("~/.ssh/${var.cluster_name}.pem")}
-  User centos
-%{~endfor}
-
 %{~for x in [for m in local.machines : m if !m.floating_ip]}
 Host ${x.hostname}
   ProxyJump ${local.jumphost}
diff --git a/terraform/modules/rke1/rancher.tf b/terraform/modules/rke1/rancher.tf
index 71cde4f..b85f038 100644
--- a/terraform/modules/rke1/rancher.tf
+++ b/terraform/modules/rke1/rancher.tf
@@ -14,7 +14,7 @@ resource "rancher2_cluster" "kube" {
     kubernetes_version = var.rke1_version
     enable_cri_dockerd = true
     network {
-      plugin = "weave"
+      plugin = var.network_plugin
     }
     ingress {
       provider = "none"
@@ -34,7 +34,7 @@ resource "rancher2_cluster" "kube" {
 
 # Create a new rancher2 Cluster Sync for foo-custom cluster
 resource "rancher2_cluster_sync" "kube" {
-  depends_on    = [openstack_compute_instance_v2.controlplane[0]]
+  depends_on    = [openstack_compute_instance_v2.machine]
   cluster_id    = rancher2_cluster.kube.id
   wait_catalogs = false
 }
@@ -101,57 +101,3 @@ resource "rancher2_cluster_role_template_binding" "member_groups" {
     ]
   }
 }
-
-# ----------------------------------------------------------------------
-# longhorn storage
-# DEPRECATED
-# ----------------------------------------------------------------------
-resource "rancher2_app_v2" "longhorn-system" {
-  count      = var.longhorn_enabled ? 1 : 0
-  cluster_id = rancher2_cluster_sync.kube.cluster_id
-  name       = "longhorn"
-  namespace  = "longhorn-system"
-  repo_name  = "rancher-charts"
-  chart_name = "longhorn"
-  project_id = rancher2_cluster_sync.kube.system_project_id
-  values     = <<EOF
-defaultSettings:
-  backupTarget: nfs://radiant-nfs.ncsa.illinois.edu:/radiant/projects/${data.openstack_identity_auth_scope_v3.scope.project_name}/${var.cluster_name}/backup
-  defaultReplicaCount: ${var.longhorn_replicas}
-persistence:
-  defaultClass: false
-  defaultClassReplicaCount: ${var.longhorn_replicas}
-EOF
-  lifecycle {
-    ignore_changes = [
-      values
-    ]
-  }
-}
-
-# ----------------------------------------------------------------------
-# monitoring
-# DEPRECATED
-# ----------------------------------------------------------------------
-resource "rancher2_app_v2" "monitor" {
-  count      = var.monitoring_enabled ? 1 : 0
-  cluster_id = rancher2_cluster_sync.kube.cluster_id
-  name       = "rancher-monitoring"
-  namespace  = "cattle-monitoring-system"
-  repo_name  = "rancher-charts"
-  chart_name = "rancher-monitoring"
-  project_id = rancher2_cluster_sync.kube.system_project_id
-  //  values        = <<EOF
-  //prometheus:
-  //  resources:
-  //    core:
-  //      limits:
-  //        cpu: "4000m"
-  //        memory: "6144Mi"
-  //EOF
-  lifecycle {
-    ignore_changes = [
-      values
-    ]
-  }
-}
-- 
GitLab