# Clean up any existing k3s installation on the master node resource "null_resource" "k3s_cleanup_master" { # SSH 登录你的 master server connection { type = "ssh" host = var.master_ip user = "root" password = var.master_password } # 远程执行清理命令 provisioner "remote-exec" { inline = [ "echo -e '\\033[32mCleanup start on master node\\033[0m'", "systemctl stop k3s 2>/dev/null || true", "pkill -f k3s 2>/dev/null || true", #"rm -rf /usr/local/bin/k3s", "rm -f /etc/systemd/system/k3s.service", "rm -rf /var/lib/rancher/k3s", "rm -rf /etc/rancher/k3s", "rm -rf /root/.kube", "echo -e '\\033[32mCleanup completed on master node\\033[0m'" ] } } # Install k3s server on the master node resource "null_resource" "k3s_install_master" { depends_on = [null_resource.k3s_cleanup_master] # SSH 登录你的 master server connection { type = "ssh" host = var.master_ip user = "root" password = var.master_password } # 远程执行命令(你原来的所有逻辑,一模一样) provisioner "remote-exec" { inline = [ "if [ ! -f /usr/local/bin/k3s ]; then", "wget -O /usr/local/bin/k3s http://download.9981.tech/k3s-v1.35.0%2Bk3s1", "chmod +x /usr/local/bin/k3s", "else", "echo -e '\\033[32m start installing master ... \\033[0m'", "chmod +x /usr/local/bin/k3s", "nohup /usr/local/bin/k3s server --disable=traefik --disable=servicelb --disable=metrics-server --token=my-secret-token --https-listen-port=6443 --pause-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 --system-default-registry=registry.cn-hangzhou.aliyuncs.com > /root/k3s.log 2>&1 &", #"/usr/local/bin/k3s server &", "disown", "echo -e '\\033[32m Done server master! \\033[0m'", #"systemctl start k3s", #"echo -e '\\033[32m Done installing master ... \\033[0m'", "fi" ] } } # Wait for k3s server to be ready on master node resource "null_resource" "wait_for_k3s_ready" { depends_on = [null_resource.k3s_install_master] connection { type = "ssh" host = var.master_ip user = "root" password = var.master_password } provisioner "remote-exec" { inline = [ "# 等待 k3s 服务完全启动并生成 token", "timeout 300 bash -c 'while [ ! -f /var/lib/rancher/k3s/server/node-token ]; do echo waiting for k3s token...; sleep 10; done' || exit 1", " echo 'T----------------'", ] } }