my-homelab-configs/bootstrap/platform/main.tf

109 lines
2.3 KiB
HCL

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
# Scale configurations down for our small 2-node footprint
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"
}
# Global Tolerations to allow Longhorn structural pods to map onto control planes
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 = "my-homelab-repo-secret"
namespace = "argocd"
labels = {
"argocd.argoproj.io/secret-type" = "repository"
}
}
data = {
type = "git"
url = "http://192.168.100.68:30300/jv/my-homelab-configs"
username = "jv"
password = "Summer12#$"
}
}