# OpenTofu 小王 - 客户端配置部署 terraform { required_providers { null = { source = "registry.opentofu.org/hashicorp/null" version = "3.2.4" } } } # 6个客户端节点列表 variable "client_nodes" { type = list(string) default = [ "hcp1", "influxdb", "ash3c", "ch4", "warden", "browser" ] } # 为每个客户端节点生成配置文件 resource "local_file" "client_configs" { for_each = toset(var.client_nodes) filename = "${path.module}/generated/${each.key}-client.hcl" content = replace( file("${path.module}/../nomad-configs-tofu/client-template.hcl"), "NODE_NAME", each.key ) } # 部署配置到每个客户端节点 resource "null_resource" "client_deploy" { for_each = toset(var.client_nodes) depends_on = [local_file.client_configs] provisioner "local-exec" { command = </dev/null || true; \ echo '替换配置文件...'; \ echo '3131' | sudo -S cp /tmp/nomad-new.hcl /etc/nomad.d/nomad.hcl; \ echo '启动服务...'; \ echo '3131' | sudo -S systemctl start nomad; \ sleep 5; \ echo '检查服务状态...'; \ echo '3131' | sudo -S systemctl status nomad --no-pager; \ echo '=== ${each.key} 部署完成 ==='" && echo " - ${each.key} 部署成功" || echo " - ${each.key} 部署失败" echo "=== ${each.key} 配置部署完成!时间: $(date) ===" EOF } triggers = { config_hash = local_file.client_configs[each.key].content_md5 deploy_time = timestamp() } } output "deployment_summary" { value = { client_nodes = var.client_nodes config_files = [for node in var.client_nodes : "${node}-client.hcl"] deploy_time = timestamp() } }