master.tf 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # Clean up any existing k3s installation on the master node
  2. resource "null_resource" "k3s_cleanup_master" {
  3. # SSH 登录你的 master server
  4. connection {
  5. type = "ssh"
  6. host = var.master_ip
  7. user = "root"
  8. password = var.master_password
  9. }
  10. # 远程执行清理命令
  11. provisioner "remote-exec" {
  12. inline = [
  13. "echo -e '\\033[32mCleanup start on master node\\033[0m'",
  14. "systemctl stop k3s 2>/dev/null || true",
  15. "pkill -f k3s 2>/dev/null || true",
  16. #"rm -rf /usr/local/bin/k3s",
  17. "rm -f /etc/systemd/system/k3s.service",
  18. "rm -rf /var/lib/rancher/k3s",
  19. "rm -rf /etc/rancher/k3s",
  20. "rm -rf /root/.kube",
  21. "echo -e '\\033[32mCleanup completed on master node\\033[0m'"
  22. ]
  23. }
  24. }
  25. # Install k3s server on the master node
  26. resource "null_resource" "k3s_install_master" {
  27. depends_on = [null_resource.k3s_cleanup_master]
  28. # SSH 登录你的 master server
  29. connection {
  30. type = "ssh"
  31. host = var.master_ip
  32. user = "root"
  33. password = var.master_password
  34. }
  35. # 远程执行命令(你原来的所有逻辑,一模一样)
  36. provisioner "remote-exec" {
  37. inline = [
  38. "if [ ! -f /usr/local/bin/k3s ]; then",
  39. "wget -O /usr/local/bin/k3s http://download.9981.tech/k3s-v1.35.0%2Bk3s1",
  40. "chmod +x /usr/local/bin/k3s",
  41. "else",
  42. "echo -e '\\033[32m start installing master ... \\033[0m'",
  43. "chmod +x /usr/local/bin/k3s",
  44. "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 &",
  45. #"/usr/local/bin/k3s server &",
  46. "disown",
  47. "echo -e '\\033[32m Done server master! \\033[0m'",
  48. #"systemctl start k3s",
  49. #"echo -e '\\033[32m Done installing master ... \\033[0m'",
  50. "fi"
  51. ]
  52. }
  53. }
  54. # Wait for k3s server to be ready on master node
  55. resource "null_resource" "wait_for_k3s_ready" {
  56. depends_on = [null_resource.k3s_install_master]
  57. connection {
  58. type = "ssh"
  59. host = var.master_ip
  60. user = "root"
  61. password = var.master_password
  62. }
  63. provisioner "remote-exec" {
  64. inline = [
  65. "# 等待 k3s 服务完全启动并生成 token",
  66. "timeout 300 bash -c 'while [ ! -f /var/lib/rancher/k3s/server/node-token ]; do echo waiting for k3s token...; sleep 10; done' || exit 1",
  67. " echo 'T----------------'",
  68. ]
  69. }
  70. }