main.tf 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # 1. 安装 K3S Server(正确官方安装法)
  2. resource "null_resource" "k3s_server" {
  3. connection {
  4. type = "ssh"
  5. host = "101.201.78.54"
  6. user = "root"
  7. password = "Xs261617"
  8. }
  9. provisioner "remote-exec" {
  10. inline = [
  11. "curl -sfL https://get.k3s.io | sh -",
  12. "sleep 20"
  13. ]
  14. }
  15. # 每次都重新执行,确保拿最新token
  16. triggers = {
  17. always = timestamp()
  18. }
  19. }
  20. # 2. 从 Server 下载 Token 到本地
  21. resource "null_resource" "get_token" {
  22. depends_on = [null_resource.k3s_server]
  23. connection {
  24. type = "ssh"
  25. host = "101.201.78.54"
  26. user = "root"
  27. password = "Xs261617"
  28. }
  29. provisioner "file" {
  30. source = "/var/lib/rancher/k3s/server/node-token"
  31. destination = "node-token"
  32. }
  33. }
  34. # 3. 读取本地 Token
  35. data "local_file" "k3s_token" {
  36. filename = "node-token"
  37. depends_on = [null_resource.get_token]
  38. }
  39. # 4. 自动安装 Worker 并加入集群
  40. resource "null_resource" "k3s_worker" {
  41. depends_on = [data.local_file.k3s_token]
  42. connection {
  43. type = "ssh"
  44. host = "47.120.61.39"
  45. user = "root"
  46. password = "Xs261617"
  47. }
  48. provisioner "remote-exec" {
  49. inline = [
  50. "curl -sfL https://get.k3s.io | K3S_URL=https://101.201.78.54:6443 K3S_TOKEN=${trimspace(data.local_file.k3s_token.content)} sh -"
  51. ]
  52. }
  53. }
  54. output "status" {
  55. value = "✅ K3s 一主一从集群安装完成!"
  56. }