feat(cert-checker): add Kubernetes resources for certificate checking functionality

- Implemented a new module for cert-checker with Kubernetes resources including ServiceAccount, Role, RoleBinding, ConfigMap, and CronJob.
- Added Python script to check certificate expiry and restart deployments if necessary.
- Configured environment variables for deployment name, namespace, and service details.
- Included requirements for the Python environment.

feat(devolo-exporter): introduce Devolo exporter for Prometheus metrics

- Created a new module for Devolo exporter with Kubernetes resources including ServiceAccount, ConfigMap, Deployment, and Service.
- Developed Python scripts to scrape metrics from Devolo devices and expose them to Prometheus.
- Configured environment variables for Devolo device IP, model, and ports.
- Added requirements for the Python environment.
This commit is contained in:
2025-10-13 22:35:35 +02:00
parent 84c8288f8a
commit d069fe3585
25 changed files with 1362 additions and 33 deletions
+1 -18
View File
@@ -10,7 +10,7 @@ module "open-webui" {
module "samba" {
source = "../../modules/apps/samba"
shared_folder = local.samba_shared_folder
shares = local.samba_shares
}
module "dns" {
@@ -73,20 +73,3 @@ module "grafana" {
fqdn = local.grafana_fqdn
}
module "node_exporter" {
source = "../../modules/utils/node-exporter"
}
module "auth_exporter" {
source = "../../modules/utils/auth-exporter"
persistent_folder = "${local.persistent_folder}/monitoring"
}
module "disk_exporter" {
source = "../../modules/utils/disk-exporter"
persistent_folder = "${local.persistent_folder}/monitoring"
smartctl_static_version = local.smartctl_static_version
smartctl_sha256 = local.smartctl_sha256
check_frequency = 600
standby_mode = false
}
+35 -1
View File
@@ -8,7 +8,18 @@ locals {
internal_issuer = "internal-ca"
# samba
samba_shared_folder = "/mnt/usb"
samba_shares = [
{
name = "USB"
path = "/mnt/usb"
comment = "USB Drive"
},
{
name = "Storage"
path = "/srv/storage"
comment = "Main Storage"
}
]
# DNS
dns_nameservers = [
@@ -127,6 +138,18 @@ locals {
upstream = "dns.dns.svc.cluster.local"
protocol = "udp"
}
"smb" = {
port = 445
host_port = 445
upstream = "smb.samba.svc.cluster.local"
protocol = "tcp"
}
"netbios" = {
port = 139
host_port = 139
upstream = "netbios.samba.svc.cluster.local"
protocol = "tcp"
}
}
ollama_proxy = {
@@ -191,6 +214,17 @@ locals {
telegram_message = file("${path.module}/resources/telegram.tpl")
grafana_fqdn = "grafana.${local.lab_domain}"
devolo_devices = {
devolo_620 = {
ip = "192.168.0.199"
model = "620"
}
# devolo_326 = {
# ip = "192.168.0.200"
# model = "326"
# }
}
}
data "terraform_remote_state" "scaleway" {
+25
View File
@@ -0,0 +1,25 @@
module "node_exporter" {
source = "../../modules/utils/node-exporter"
}
module "auth_exporter" {
source = "../../modules/utils/auth-exporter"
persistent_folder = "${local.persistent_folder}/monitoring"
}
module "disk_exporter" {
source = "../../modules/utils/disk-exporter"
persistent_folder = "${local.persistent_folder}/monitoring"
smartctl_static_version = local.smartctl_static_version
smartctl_sha256 = local.smartctl_sha256
check_frequency = 600
standby_mode = false
}
module "devolo_exporter" {
for_each = local.devolo_devices
source = "../../modules/utils/devolo-expporter"
devolo_ip = each.value.ip
devolo_model = each.value.model
}
@@ -21,3 +21,9 @@ scrape_configs:
- "disk-exporter.prometheus.svc.cluster.local:9100"
- labels:
cluster: "dev-01"
- job_name: devolo-exporter
scrape_interval: 10s
static_configs:
- targets:
- "devolo-exporter-620.prometheus.svc.cluster.local:9100"
# - "devolo-exporter-326.prometheus.svc.cluster.local:9100"