feat: initial homelab-gitops declarative structure (Terraform & ArgoCD)

This commit is contained in:
2026-11-02 17:01:29 -05:00
parent 9026f26242
commit 3aa7da5f31
35 changed files with 1200 additions and 2 deletions

View File

@@ -0,0 +1,9 @@
output "configured_shares" {
description = "Configured Synology NFS shares"
value = [
synology_filestation_share.kubernetes.name,
synology_filestation_share.docker.name,
synology_filestation_share.backups.name,
synology_filestation_share.media.name,
]
}

View File

@@ -0,0 +1,25 @@
terraform {
required_version = ">= 1.5.0"
required_providers {
synology = {
source = "synology-community/synology"
version = "~> 0.2"
}
}
backend "http" {
address = "https://git.snarfnet.net/api/packages/snarf/terraform/state/synology"
lock_address = "https://git.snarfnet.net/api/packages/snarf/terraform/state/synology/lock"
unlock_address = "https://git.snarfnet.net/api/packages/snarf/terraform/state/synology/lock"
username = "snarf"
}
}
provider "synology" {
host = var.synology_host
port = var.synology_port
username = var.synology_user
password = var.synology_password
https = true
insecure = true
}

View File

@@ -0,0 +1,31 @@
# 1. Kubernetes Longhorn Backup Target Shared Folder
resource "synology_filestation_share" "kubernetes" {
name = "kubernetes"
vol_path = "/volume1"
description = "Kubernetes Longhorn Backup Target and Persistent RWX storage"
enable_recycle_bin = false
}
# 2. Docker Swarm Persistent Volumes Shared Folder
resource "synology_filestation_share" "docker" {
name = "docker"
vol_path = "/volume1"
description = "Docker Swarm shared persistent storage"
enable_recycle_bin = false
}
# 3. Homelab Backups Shared Folder
resource "synology_filestation_share" "backups" {
name = "backups"
vol_path = "/volume1"
description = "Automated SQLite and system config backup bundles"
enable_recycle_bin = true
}
# 4. Media Shared Folder
resource "synology_filestation_share" "media" {
name = "media"
vol_path = "/volume1"
description = "Media and storage pool"
enable_recycle_bin = false
}

View File

@@ -0,0 +1,24 @@
variable "synology_host" {
type = string
description = "Synology DSM IP address"
default = "14.10.10.71"
}
variable "synology_port" {
type = number
description = "Synology DSM HTTPS port"
default = 5001
}
variable "synology_user" {
type = string
description = "Synology DSM management user"
default = "admin"
}
variable "synology_password" {
type = string
description = "Synology DSM management password"
default = ""
sensitive = true
}