terraform { required_version = ">= 1.0" required_providers { helm = { source = "hashicorp/helm" version = "~> 2.12" } kubernetes = { source = "hashicorp/kubernetes" version = "~> 2.26" } } } provider "kubernetes" { config_path = "/home/jv/.kube/config" } provider "helm" { kubernetes { config_path = "/home/jv/.kube/config" } } resource "helm_release" "cilium" { name = "cilium" repository = "https://helm.cilium.io/" chart = "cilium" namespace = "kube-system" set { name = "operator.replicas" value = "1" } } resource "helm_release" "longhorn" { depends_on = [helm_release.cilium] name = "longhorn" repository = "https://charts.longhorn.io" chart = "longhorn" namespace = "longhorn-system" create_namespace = true timeout = 600 set { name = "csi.attacherReplicaCount" value = "1" } set { name = "csi.provisionerReplicaCount" value = "1" } set { name = "csi.resizerReplicaCount" value = "1" } set { name = "csi.snapshotterReplicaCount" value = "1" } set { name = "defaultSettings.defaultReplicaCount" value = "1" } set { name = "global.tolerations[0].key" value = "node-role.kubernetes.io/control-plane" } set { name = "global.tolerations[0].operator" value = "Exists" } set { name = "global.tolerations[0].effect" value = "NoSchedule" } } resource "helm_release" "argocd" { depends_on = [helm_release.longhorn] name = "argocd" repository = "https://argoproj.github.io/argo-helm" chart = "argo-cd" namespace = "argocd" create_namespace = true } resource "kubernetes_secret_v1" "argocd_private_repo" { depends_on = [helm_release.argocd] metadata { name = "laptop-bootstrap-repo-secret" namespace = "argocd" labels = { "argocd.argoproj.io/secret-type" = "repository" } } data = { type = "git" url = "ssh://jv@192.168.100.68/home/jv/git-server/my-homelab-configs.git" sshPrivateKey = file("/home/jv/.ssh/id_ed25519") } }