feat(aula-08): adicionar seleção de arquitetura (arm64/amd64) e detectar tofu/terraform
- Variável `arch` no Terraform: arm64 (CAX11 em nbg1) ou amd64 (CPX21 em fsn1) - locals map traduz arch → server_type + location - setup.sh pergunta arquitetura interativamente (default: arm64) - Detecta OpenTofu ou Terraform automaticamente (preferência tofu) - Autoscaler: sed troca CAX→CPX nos server_types quando amd64 - tfvars gerado inclui arch selecionado
This commit is contained in:
+21
-8
@@ -38,6 +38,19 @@ locals {
|
||||
# Endpoint: LoadBalancer IP if enabled, otherwise Floating IP
|
||||
cluster_endpoint_ip = var.enable_loadbalancer ? hcloud_load_balancer.cluster[0].ipv4 : hcloud_floating_ip.control_plane[0].ip_address
|
||||
|
||||
# Arquitetura: mapeia arm64→CAX (Nuremberg) ou amd64→CPX (Frankfurt)
|
||||
arch_config = {
|
||||
arm64 = {
|
||||
server_type_cp = "cax11"
|
||||
location = "nbg1"
|
||||
}
|
||||
amd64 = {
|
||||
server_type_cp = "cpx21"
|
||||
location = "fsn1"
|
||||
}
|
||||
}
|
||||
selected_arch = local.arch_config[var.arch]
|
||||
|
||||
common_labels = {
|
||||
cluster = local.cluster_name
|
||||
environment = var.environment
|
||||
@@ -192,15 +205,15 @@ resource "hcloud_placement_group" "cluster" {
|
||||
}
|
||||
|
||||
############################################################
|
||||
# CONTROL PLANE NODES (HA with 3 CAX11 nodes)
|
||||
# CONTROL PLANE NODES (HA com 3 nodes)
|
||||
############################################################
|
||||
|
||||
resource "hcloud_server" "control_plane" {
|
||||
count = local.control_plane_count
|
||||
name = "${local.cluster_name}-cp-${count.index}"
|
||||
server_type = "cax11"
|
||||
server_type = local.selected_arch.server_type_cp
|
||||
image = data.hcloud_image.talos.id
|
||||
location = "nbg1" # CAX11 only available in Nuremberg
|
||||
location = local.selected_arch.location
|
||||
ssh_keys = [local.ssh_key_id]
|
||||
|
||||
firewall_ids = [hcloud_firewall.cluster.id]
|
||||
@@ -209,7 +222,7 @@ resource "hcloud_server" "control_plane" {
|
||||
labels = merge(local.common_labels, {
|
||||
role = "control-plane"
|
||||
node = "cp-${count.index}"
|
||||
arch = "arm64"
|
||||
arch = var.arch
|
||||
})
|
||||
|
||||
public_net {
|
||||
@@ -373,15 +386,15 @@ resource "hcloud_load_balancer_target" "worker" {
|
||||
}
|
||||
|
||||
############################################################
|
||||
# WORKER NODE (Single CAX11)
|
||||
# WORKER NODE
|
||||
############################################################
|
||||
|
||||
resource "hcloud_server" "worker" {
|
||||
count = 1
|
||||
name = "${local.cluster_name}-worker-${count.index}"
|
||||
server_type = "cax11"
|
||||
server_type = local.selected_arch.server_type_cp
|
||||
image = data.hcloud_image.talos.id
|
||||
location = "nbg1"
|
||||
location = local.selected_arch.location
|
||||
ssh_keys = [local.ssh_key_id]
|
||||
|
||||
firewall_ids = [hcloud_firewall.cluster.id]
|
||||
@@ -390,7 +403,7 @@ resource "hcloud_server" "worker" {
|
||||
labels = merge(local.common_labels, {
|
||||
role = "worker"
|
||||
node = "worker-${count.index}"
|
||||
arch = "arm64"
|
||||
arch = var.arch
|
||||
})
|
||||
|
||||
public_net {
|
||||
|
||||
Reference in New Issue
Block a user