diff --git a/terraform/hetzner.tf b/terraform/hetzner.tf index 882b9cb..97328f5 100644 --- a/terraform/hetzner.tf +++ b/terraform/hetzner.tf @@ -132,6 +132,98 @@ resource "hcloud_server" "server_devops" { } } +resource "hcloud_primary_ip" "primary_ipv4_k8s_test" { + name = "primary_ipv4_applications" + datacenter = data.hcloud_datacenter.falkenstein.name + type = "ipv4" + assignee_type = "server" + auto_delete = false +} + +resource "hcloud_primary_ip" "primary_ipv6_k8s_test" { + name = "primary_ipv6_applications" + datacenter = data.hcloud_datacenter.falkenstein.name + type = "ipv6" + assignee_type = "server" + auto_delete = false +} + +resource "hcloud_server" "server_k8s_test" { + name = "applications" + image = "ubuntu-22.04" + allow_deprecated_images = false + server_type = "cax21" + location = data.hcloud_location.falkenstein.name + public_net { + ipv4_enabled = true + ipv4 = hcloud_primary_ip.primary_ipv4_k8s_test.id + ipv6_enabled = true + ipv6 = hcloud_primary_ip.primary_ipv6_k8s_test.id + } + ignore_remote_firewall_ids = false + keep_disk = false + placement_group_id = data.hcloud_placement_group.default.id + labels = { + "kubernetes" : "yes" + } + firewall_ids = [hcloud_firewall.basic-firewall.id, hcloud_firewall.k8s-firewall.id] + ssh_keys = [data.hcloud_ssh_key.macos.id] + user_data = templatefile("${path.module}/modules/k8s-cluster/templates/cloud-init-k8s-manager.tftpl", { + admin_public_ssh_key : format("%s %s", data.hcloud_ssh_key.macos.public_key, data.hcloud_ssh_key.macos.name) + admin_user : "2martensAdmin" + terraform_public_ssh_key : var.terraform_public_ssh_key + main_node : true + microk8s_config : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/snap/microk8s-config-manager.tftpl", { + node_ip : "10.0.0.2" + api_server_domain : "" + api_server_ip : hcloud_primary_ip.primary_ipv4_k8s_test.ip_address + main_node : true + main_node_ip : "10.0.0.2" + cluster_token : "" + })) + snapcraft : base64encode(file("${path.module}/modules/k8s-cluster/templates/snap/snapcraft.yaml")) + packages_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/install-packages.sh", { + refresh_day : "fri" + refresh_hour : format("%02d", 0) + })) + firewall_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/firewall-setup.sh", { + node_ip : "10.0.0.2" + })) + ssh_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/ssh-setup.sh", { + admin_user : "2martensAdmin" + })) + microk8s_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/microk8s-setup.sh", { + microk8s_channel : "1.28-strict/stable" + main_node : true + manager_node : true + })) + cluster_setup_values : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/helm/cluster-setup-values.yaml", { + client_id : var.vault_client_id + client_secret : var.vault_client_secret + })) + argocd_ha_values : base64encode(file("${path.module}/modules/k8s-cluster/templates/helm/argocd-values-ha.yaml")) + cluster_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/cluster-setup.sh", { + argocd_environment : "test" + argocd_version : "0.1.2" + high_availability : false + admin_user : "2martensAdmin" + })) + }) + shutdown_before_deletion = true + + network { + network_id = hcloud_network.kubernetes-network.id + ip = "10.0.0.2" + alias_ips = [] + } + + lifecycle { + ignore_changes = [ssh_keys, user_data] + } + + depends_on = [hcloud_network_subnet.k8s-network-subnet] +} + module "drone_domain" { source = "./modules/domain" domain = local.domain diff --git a/terraform/outputs.tf b/terraform/outputs.tf index da55b7b..97e0cc3 100644 --- a/terraform/outputs.tf +++ b/terraform/outputs.tf @@ -2,7 +2,6 @@ output "ansible_inventory" { value = templatefile("${path.module}/templates/inventory.tftpl", { devops = hcloud_server.server_devops.ipv4_address, k8s_servers = concat( - tolist([hcloud_server.server_k8s_test.ipv4_address]), module.test_cluster.node_ipv6_addresses ) })