provider "talos" {} provider "kubernetes" { host = data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.host client_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_certificate) client_key = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_key) cluster_ca_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.ca_certificate) } provider "helm" { kubernetes { host = data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.host client_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_certificate) client_key = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_key) cluster_ca_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.ca_certificate) } } resource "talos_machine_secrets" "cluster" { talos_version = var.talos_version } data "talos_machine_configuration" "control_plane" { cluster_name = var.cluster_name cluster_endpoint = var.cluster_endpoint machine_type = "controlplane" talos_version = var.talos_version kubernetes_version = var.kubernetes_version machine_secrets = talos_machine_secrets.cluster.machine_secrets } data "talos_machine_configuration" "worker" { cluster_name = var.cluster_name cluster_endpoint = var.cluster_endpoint machine_type = "worker" talos_version = var.talos_version kubernetes_version = var.kubernetes_version machine_secrets = talos_machine_secrets.cluster.machine_secrets } resource "talos_machine_configuration_apply" "control_plane" { client_configuration = talos_machine_secrets.cluster.client_configuration machine_configuration_input = data.talos_machine_configuration.control_plane.machine_configuration node = var.control_plane_ip } resource "talos_machine_configuration_apply" "worker" { client_configuration = talos_machine_secrets.cluster.client_configuration machine_configuration_input = data.talos_machine_configuration.worker.machine_configuration node = var.worker_ip } resource "talos_machine_bootstrap" "cluster" { node = var.control_plane_ip client_configuration = talos_machine_secrets.cluster.client_configuration depends_on = [talos_machine_configuration_apply.control_plane] } data "talos_cluster_kubeconfig" "cluster" { client_configuration = talos_machine_secrets.cluster.client_configuration node = var.control_plane_ip endpoints = [var.control_plane_ip] depends_on = [talos_machine_bootstrap.cluster, talos_machine_configuration_apply.worker] } resource "helm_release" "argocd" { name = "argocd" namespace = "argocd" create_namespace = true repository = "https://argoproj.github.io/argo-helm" chart = "argo-cd" version = var.argocd_chart_version values = [yamlencode({ server = { service = { type = "ClusterIP" } } controller = { replicas = 1 } repoServer = { replicas = 1 } applicationSet = { replicas = 1 } })] depends_on = [data.talos_cluster_kubeconfig.cluster] } resource "kubernetes_secret_v1" "gitea" { metadata { name = "gitea-repository" namespace = "argocd" labels = { "argocd.argoproj.io/secret-type" = "repository" } } type = "Opaque" data = { type = "git" url = var.gitea_repository_url username = var.gitea_username password = var.gitea_password } depends_on = [helm_release.argocd] }