| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # 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'"
- ]
- }
- }
- 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 = [
- "echo -e '\\033[32mChecking if k3s binary exists...\\033[0m'",
- "if [ ! -f /usr/local/bin/k3s ]; then",
- " echo -e '\\033[32mDownloading k3s binary...\\033[0m'",
- " 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[33mk3s binary already exists, skipping download\\033[0m'",
- "fi",
- "echo -e '\\033[32mCreating k3s systemd service...\\033[0m'",
- # 关键:用 heredoc 完全避免语法错误
- "cat > /etc/systemd/system/k3s.service <<'EOF'",
- "[Unit]",
- "Description=Lightweight Kubernetes",
- "Documentation=https://k3s.io",
- "After=network-online.target",
- "[Service]",
- "Type=exec",
- "ExecStart=/usr/local/bin/k3s server --tls-san ${var.master_ip} --advertise-address ${var.master_ip} --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",
- "Restart=always",
- "RestartSec=5s",
- "[Install]",
- "WantedBy=multi-user.target",
- "EOF",
- "systemctl daemon-reload",
- "systemctl enable --now k3s",
- "echo -e '\\033[32mK3s started successfully via systemd!\\033[0m'",
- ]
- }
- }
- resource "null_resource" "copy_token_to_workers" {
- depends_on = [null_resource.k3s_install_master]
-
- connection {
- type = "ssh"
- host = var.master_ip
- user = "root"
- password = var.master_password
- }
- provisioner "remote-exec" {
- inline = [
- "echo -e '\\033[32mK3s Starting copy token to workers!\\033[0m'",
- "timeout 300 bash -c 'while [ ! -f /var/lib/rancher/k3s/server/node-token ]; do echo waiting for k3s token...; sleep 10; done'",
- "sshpass -p '${var.worker_password}' scp -o StrictHostKeyChecking=no /var/lib/rancher/k3s/server/node-token root@${var.worker_ips[0]}:/root/",
- "sshpass -p '${var.worker_password}' scp -o StrictHostKeyChecking=no /var/lib/rancher/k3s/server/node-token root@${var.worker_ips[1]}:/root/",
- "echo -e '\\033[32mK3s Done copy token to workers!\\033[0m'",
- ]
- }
- }
|