terraform { required_version = ">= 1.0" required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~> 2.26" } } } provider "kubernetes" { config_path = var.kubeconfig_path } resource "kubernetes_manifest" "argocd_application" { for_each = var.applications field_manager { force_conflicts = true } manifest = { apiVersion = "argoproj.io/v1alpha1" kind = "Application" metadata = { name = each.key namespace = var.argocd_namespace } spec = { project = each.value.project source = { repoURL = var.gitops_repo_url targetRevision = each.value.target_revision path = each.value.path } destination = { server = "https://kubernetes.default.svc" namespace = each.value.namespace } syncPolicy = { automated = { prune = each.value.prune selfHeal = each.value.self_heal } syncOptions = each.value.create_namespace ? ["CreateNamespace=true"] : [] } } } }