devops/infra/modules/cluster/init-k3s/main.tf

48 lines
1.2 KiB
HCL

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
}