50 lines
1.1 KiB
HCL
50 lines
1.1 KiB
HCL
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"] : []
|
|
}
|
|
}
|
|
}
|
|
}
|