terraform { required_providers { local = { source = "hashicorp/local" version = "2.4.0" } ssh = { source = "loafoe/ssh" version = "2.6.0" } } required_version = ">= 1.0.0" } resource "ssh_resource" "install_k3s" { host = var.node_public_ip commands = [ "bash -c 'curl https://get.k3s.io | INSTALL_K3S_EXEC=\"server --disable=traefik --node-external-ip ${var.node_public_ip} --node-ip ${var.node_internal_ip}\" INSTALL_K3S_VERSION=${var.rancher_kubernetes_version} sh -'" ] user = var.node_username private_key = var.ssh_private_key_pem } resource "ssh_resource" "retrieve_config" { depends_on = [ ssh_resource.install_k3s ] host = var.node_public_ip commands = [ "sudo sed \"s/127.0.0.1/${var.node_public_ip}/g\" /etc/rancher/k3s/k3s.yaml" ] user = var.node_username private_key = var.ssh_private_key_pem } resource "local_file" "kube_config_server_yaml" { filename = format("%s/%s", path.root, "kube_config_server.yaml") content = ssh_resource.retrieve_config.result } output "kube_config_server_yaml" { value = local_file.kube_config_server_yaml.filename } output "installed" { value = true }