mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 16:44:33 +00:00
- Add k3s start/stop Ansible playbooks and roles. - Implement OpenTofu initialization scripts and k8s manifests. - Update ncurses installer with OpenTofu support and improved k3s integration. - Add mode support (--mode) to etc/ initialization scripts. - Update prole-db with recovery, barman objectstore, and SSH OpenBao support. - Refine k8s manifests for OpenBao and prole-db.
73 lines
1.6 KiB
HCL
73 lines
1.6 KiB
HCL
terraform {
|
|
required_version = ">= 1.6.0"
|
|
required_providers {
|
|
kubernetes = {
|
|
source = "hashicorp/kubernetes"
|
|
version = "~> 2.30"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "kubernetes" {
|
|
host = var.k3s_server_url
|
|
token = var.k3s_token
|
|
insecure = true
|
|
}
|
|
|
|
locals {
|
|
manifest_dir = "${path.module}/manifests"
|
|
manifest_files = fileset(local.manifest_dir, "**/*.yaml")
|
|
|
|
raw_documents = flatten([
|
|
for f in local.manifest_files : [
|
|
for doc in split("\n---", trimspace(file("${local.manifest_dir}/${f}"))) :
|
|
trimspace(doc)
|
|
if trimspace(doc) != ""
|
|
]
|
|
])
|
|
|
|
decoded_documents = [
|
|
for doc in local.raw_documents : yamldecode(doc)
|
|
if try(yamldecode(doc).kind, "") != ""
|
|
]
|
|
|
|
cluster_scoped_kinds = toset([
|
|
"Namespace",
|
|
"CustomResourceDefinition",
|
|
"ClusterRole",
|
|
"ClusterRoleBinding",
|
|
"ClusterIssuer",
|
|
"PersistentVolume",
|
|
"StorageClass",
|
|
"MutatingWebhookConfiguration",
|
|
"ValidatingWebhookConfiguration",
|
|
])
|
|
|
|
namespaced_documents = [
|
|
for m in local.decoded_documents :
|
|
contains(local.cluster_scoped_kinds, m.kind) ? m : merge(
|
|
m,
|
|
{
|
|
metadata = merge(
|
|
lookup(m, "metadata", {}),
|
|
{ namespace = var.namespace }
|
|
)
|
|
}
|
|
)
|
|
]
|
|
}
|
|
|
|
resource "kubernetes_manifest" "namespace" {
|
|
manifest = {
|
|
apiVersion = "v1"
|
|
kind = "Namespace"
|
|
metadata = { name = var.namespace }
|
|
}
|
|
}
|
|
|
|
resource "kubernetes_manifest" "resources" {
|
|
for_each = { for idx, m in local.namespaced_documents : tostring(idx) => m }
|
|
manifest = each.value
|
|
depends_on = [kubernetes_manifest.namespace]
|
|
}
|