feat: initial homelab-gitops declarative structure (Terraform & ArgoCD)
This commit is contained in:
9
terraform/synology/outputs.tf
Normal file
9
terraform/synology/outputs.tf
Normal 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,
|
||||
]
|
||||
}
|
||||
25
terraform/synology/providers.tf
Normal file
25
terraform/synology/providers.tf
Normal 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
|
||||
}
|
||||
31
terraform/synology/shares.tf
Normal file
31
terraform/synology/shares.tf
Normal 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
|
||||
}
|
||||
24
terraform/synology/variables.tf
Normal file
24
terraform/synology/variables.tf
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user