Refacto and add modules

This commit is contained in:
2024-02-06 11:03:20 +01:00
parent 159b576b24
commit bcdf666cc0
47 changed files with 661 additions and 338 deletions

View File

@@ -1,16 +1,15 @@
locals {
app_slug = (var.component == var.instance || var.component=="") ? var.instance : format("%s-%s", var.component, var.instance)
app_slug = "${var.instance}${var.component == "" ? "" : "-"}${var.component}"
}
resource "kubectl_manifest" "backup_schedule" {
count = var.backups.enable ? 1 : 0
yaml_body = <<-EOF
yaml_body = <<-EOF
apiVersion: k8up.io/v1
kind: Schedule
metadata:
name: "${var.app_slug}-backup"
name: "${local.app_slug}-backup"
namespace: "${var.namespace}"
labels: ${jsonencode(local.labels)}
labels: ${jsonencode(var.labels)}
spec:
backend:
repoPasswordSecretRef:
@@ -20,11 +19,11 @@ resource "kubectl_manifest" "backup_schedule" {
accessKeyIDSecretRef:
key: "${var.backups.key_id_key}"
name: "${var.backups.secret_name}"
bucket: "${var.app_slug}-${var.namespace}"
bucket: "${local.app_slug}-${var.namespace}"
endpoint: "${var.backups.endpoint}/restic"
secretAccessKeySecretRef:
key: "${var.backups.secret_key}"
name: "${var.backups.secret-name}"
name: "${var.backups.secret_name}"
backup:
schedule: "${var.backups.schedule.backup}"
failedJobsHistoryLimit: 2
@@ -33,10 +32,10 @@ resource "kubectl_manifest" "backup_schedule" {
schedule: "${var.backups.schedule.check}"
prune:
retention:
keepDaily: ${var.backups.retention.keepDaily}
keepMonthly: ${var.backups.retention.keepMonthly}
keepWeekly: ${var.backups.retention.keepWeekly}
keepYearly: ${var.backups.retention.keepYearly}
keepDaily: ${var.backups.retention.keep_daily}
keepMonthly: ${var.backups.retention.keep_monthly}
keepWeekly: ${var.backups.retention.keep_weekly}
keepYearly: ${var.backups.retention.keep_yearly}
schedule: "${var.backups.schedule.prune}"
EOF
}

View File

@@ -1,8 +1,8 @@
terraform {
required_providers {
kubectl = {
source = "gavinbunney/kubectl"
version = "~> 1.14.0"
source = "gavinbunney/kubectl"
version = "~> 1.14.0"
}
}
}

View File

@@ -11,45 +11,45 @@ variable "labels" {
type = map(string)
}
variable "backups" {
default = {
"enable" = false
"endpoint" = ""
default = {
"enable" = false
"endpoint" = ""
"key_id_key" = "s3-id"
"restic_key" = "bck-password"
"retention" = {
"keepDaily" = 14
"keepMonthly" = 12
"keepWeekly" = 6
"keepYearly" = 12
"keep_daily" = 14
"keep_monthly" = 12
"keep_weekly" = 6
"keep_yearly" = 12
}
"schedule" = {
"backup" = "30 3 * * *"
"check" = "30 5 * * 1"
"db" = "30 3 * * *"
"prune" = "30 1 * * 0"
"check" = "30 5 * * 1"
"db" = "30 3 * * *"
"prune" = "30 1 * * 0"
}
"secret_key" = "s3-secret"
"secret_key" = "s3-secret"
"secret_name" = "backup-settings"
"use_barman" = false
"use_barman" = false
}
type = object({
enable = optional(bool),
endpoint = optional(string),
type = object({
enable = optional(bool),
endpoint = optional(string),
key_id_key = optional(string),
restic_key = optional(string),
retention = optional(object({
keepDaily = optional(number),
keepMonthly = optional(number),
keepWeekly = optional(number),
keepYearly = optional(number)
keep_daily = optional(number),
keep_monthly = optional(number),
keep_weekly = optional(number),
keep_yearly = optional(number)
})),
schedule = optional(object({
backup = optional(string),
check = optional(string),
prune = optional(string)
check = optional(string),
prune = optional(string)
})),
secret_key = optional(string),
secret_key = optional(string),
secret_name = optional(string),
use_barman = optional(bool)
use_barman = optional(bool)
})
}
}