Compare commits
8
Commits
d40c4569e4
...
bitwarden
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85026544e8 | ||
|
|
810fa2951a | ||
|
|
9f83ec215b | ||
|
|
cbf2a33440 | ||
|
|
3ff155e3e6 | ||
|
|
a53852b0c6 | ||
|
|
aa5826f6a4 | ||
|
|
48cc59e735 |
@@ -1,11 +1,59 @@
|
||||
terraform {
|
||||
required_version = "> 0.8.0"
|
||||
required_providers {
|
||||
bitwarden = {
|
||||
source = "maxlaverse/bitwarden"
|
||||
version = ">= 0.13.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "kubernetes" {
|
||||
config_path = "~/.kube/config"
|
||||
}
|
||||
|
||||
provider "bitwarden" {
|
||||
email = "pierre@geeraert.eu"
|
||||
master_password = ""
|
||||
server = "https://bitwarden.tryton.geeraert.eu"
|
||||
experimental {
|
||||
embedded_client = true
|
||||
}
|
||||
}
|
||||
#https://stackoverflow.com/questions/66670949/how-to-tell-terraform-to-skip-the-secret-manager-resource-if-it-exists
|
||||
#for the secret not overwritten (not tested)
|
||||
data "bitwarden_item_login" "example" {
|
||||
search = "bookstack.zeus.geeraert.eu"
|
||||
}
|
||||
|
||||
data "bitwarden_item_secure_note" "vpn_preshared_key" {
|
||||
search = "terraform testing"
|
||||
}
|
||||
output "pgpin" {
|
||||
value = nonsensitive(coalesce(data.bitwarden_item_secure_note.vpn_preshared_key.field.1.hidden,1234))
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
resource "random_password" "password" {
|
||||
length = 16
|
||||
special = true
|
||||
override_special = "!#$%&*()-_=+[]{}<>:?"
|
||||
}
|
||||
|
||||
resource "bitwarden_item_secure_note" "terraform_upload_testing" {
|
||||
name = "terraform upload testing"
|
||||
# notes = <<EOT
|
||||
#[global]
|
||||
#secret = "<something sensitive>"
|
||||
#EOT
|
||||
organization_id = "a6361589-badd-4bde-9cb4-af8901161c0d"
|
||||
collection_ids = ["3fa902cd-8244-46bc-a4ea-af8901262d94"]
|
||||
|
||||
field {
|
||||
name = "category"
|
||||
hidden = random_password.password.result
|
||||
}
|
||||
}
|
||||
|
||||
variable "kubernetes" {
|
||||
type = map(object({
|
||||
@@ -35,7 +83,7 @@ variable "kubernetes" {
|
||||
connected_namespace = optional(string, "")
|
||||
# namespace = optional(string,coalesce(connected_namespace,""))
|
||||
#block_namespace_creation = optional(bool, false)
|
||||
service_port = optional(number)
|
||||
service_port = optional(list(number))
|
||||
service_type = optional(string, "ClusterIP")
|
||||
service_name = optional(string)
|
||||
liveness_tcp_socket = optional(number)
|
||||
@@ -118,7 +166,7 @@ locals {
|
||||
])
|
||||
}
|
||||
|
||||
resource "kubernetes_manifest" "service" {
|
||||
resource "kubernetes_manifest" "manifest" {
|
||||
for_each = { for item in local.kubernetes_manifests : item.key => item }
|
||||
|
||||
manifest = yamldecode(file(each.value.manifest))
|
||||
@@ -205,10 +253,20 @@ resource "kubernetes_service" "automatic_service" {
|
||||
selector = {
|
||||
app = each.key
|
||||
}
|
||||
port {
|
||||
port = each.value.service_port
|
||||
target_port = each.value.service_port
|
||||
dynamic "port" {
|
||||
for_each = each.value.service_port != null ? each.value.service_port : []
|
||||
content {
|
||||
port = port.value
|
||||
target_port = port.value
|
||||
name = replace("${each.key}${port.value}", "/(.{0,15})(.*)/", "$1")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
# port {
|
||||
# port = each.value.service_port
|
||||
# target_port = each.value.service_port
|
||||
# }
|
||||
type = each.value.service_type
|
||||
|
||||
|
||||
@@ -298,10 +356,11 @@ resource "kubernetes_deployment_v1" "automatic" {
|
||||
image = each.value.image
|
||||
name = coalesce(each.value.name, each.key)
|
||||
dynamic "port" {
|
||||
for_each = each.value.service_port != null ? [""] : []
|
||||
for_each = each.value.service_port != null ? each.value.service_port : []
|
||||
content {
|
||||
container_port = each.value.service_port
|
||||
name = each.key
|
||||
container_port = port.value
|
||||
# name = "${each.key}-${port.value}"
|
||||
name = replace("${each.key}${port.value}", "/(.{0,15})(.*)/", "$1")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+41
-43
@@ -6,18 +6,18 @@ kubernetes = {
|
||||
extra_manifest = ["/opt/kubernetes/Bookstack_kube/Bookstack.configmap.yaml", "/opt/kubernetes/Bookstack_kube/Bookstack.secret.yaml"]
|
||||
#image = "linuxserver/bookstack:24.10.3"
|
||||
image = "linuxserver/bookstack:latest"
|
||||
service_port = 80
|
||||
service_port = [80, 443]
|
||||
database = {
|
||||
"image" = "lscr.io/linuxserver/mariadb"
|
||||
"port" = 3306
|
||||
"mountPath" = "/config"
|
||||
}
|
||||
# requirements = {
|
||||
# limits-cpu = "18m"
|
||||
# limits-memory = "100Mi"
|
||||
# requests-cpu = "10m"
|
||||
# requests-memory = "70Mi"
|
||||
# }
|
||||
# requirements = {
|
||||
# limits-cpu = "18m"
|
||||
# limits-memory = "100Mi"
|
||||
# requests-cpu = "10m"
|
||||
# requests-memory = "70Mi"
|
||||
# }
|
||||
secret_ref = ["bookstack-credentials"]
|
||||
config_map_ref = ["config"]
|
||||
|
||||
@@ -77,7 +77,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
name = "screeps-server"
|
||||
image = "screepers/screeps-launcher"
|
||||
service_port = 21025
|
||||
service_port = [21025]
|
||||
service_type = "LoadBalancer"
|
||||
|
||||
environment = {
|
||||
@@ -107,7 +107,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
name = "stirling-pdf"
|
||||
image = "docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest"
|
||||
service_port = 8080
|
||||
service_port = [8080]
|
||||
|
||||
environment = {
|
||||
LANGS = {
|
||||
@@ -138,7 +138,7 @@ kubernetes = {
|
||||
replicas = 0
|
||||
name = "stash"
|
||||
image = "stashapp/stash:latest"
|
||||
service_port = 9999
|
||||
service_port = [9999]
|
||||
#extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/stash/stash-reddit-dowloader.configmap.yml"]
|
||||
environment = {
|
||||
STASH_STASH = {
|
||||
@@ -198,7 +198,7 @@ kubernetes = {
|
||||
dns_nameservers = "10.2.0.1"
|
||||
replicas = 01
|
||||
image = "qmcgaw/gluetun:latest"
|
||||
service_port = 8888
|
||||
service_port = [8888]
|
||||
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/gluetun/gluetun-secret-netherland.yaml"]
|
||||
security_context = true
|
||||
# requirements = {
|
||||
@@ -301,7 +301,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
namespace = "onitama"
|
||||
image = "ghcr.io/jackadamson/onitama:latest"
|
||||
service_port = 8080
|
||||
service_port = [8080]
|
||||
requirements = {
|
||||
limits-cpu = "50m"
|
||||
limits-memory = "50Mi"
|
||||
@@ -355,7 +355,7 @@ kubernetes = {
|
||||
redis = {
|
||||
enabled = false
|
||||
image = "redis"
|
||||
service_port = 6379
|
||||
service_port = [6379]
|
||||
liveness_tcp_socket = 6379
|
||||
# environment_variables = [{
|
||||
# "name" : "redis_PORT",
|
||||
@@ -366,7 +366,7 @@ kubernetes = {
|
||||
vulcan = {
|
||||
enabled = false
|
||||
image = "localhost:31795/vulcan-frontend:latest"
|
||||
service_port = 80
|
||||
service_port = [80]
|
||||
requirements = {
|
||||
limits-cpu = "50m"
|
||||
limits-memory = "50Mi"
|
||||
@@ -394,7 +394,7 @@ kubernetes = {
|
||||
requests-cpu = "50m"
|
||||
requests-memory = "50Mi"
|
||||
}
|
||||
service_port = 3000
|
||||
service_port = [3000]
|
||||
pvc_size = "1Gi"
|
||||
mount_path = "/data"
|
||||
}
|
||||
@@ -407,7 +407,7 @@ kubernetes = {
|
||||
requests-cpu = "50m"
|
||||
requests-memory = "50Mi"
|
||||
}
|
||||
service_port = 3000
|
||||
service_port = [3000]
|
||||
pvc_size = "1Gi"
|
||||
mount_path = "/data"
|
||||
}
|
||||
@@ -415,7 +415,7 @@ kubernetes = {
|
||||
notmuch = {
|
||||
enabled = false
|
||||
image = "kalbasit/notmuch"
|
||||
service_port = 80
|
||||
service_port = [80]
|
||||
}
|
||||
|
||||
spider = {
|
||||
@@ -428,7 +428,7 @@ kubernetes = {
|
||||
requests-cpu = "50m"
|
||||
requests-memory = "50Mi"
|
||||
}
|
||||
service_port = 8080
|
||||
service_port = [8080]
|
||||
pvc = {
|
||||
spider-data = {
|
||||
pvc = true
|
||||
@@ -448,7 +448,7 @@ kubernetes = {
|
||||
requests-cpu = "50m"
|
||||
requests-memory = "50Mi"
|
||||
}
|
||||
service_port = 80
|
||||
service_port = [80]
|
||||
}
|
||||
|
||||
|
||||
@@ -456,7 +456,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
namespace = "paper"
|
||||
image = "ghcr.io/paperless-ngx/paperless-ngx:latest"
|
||||
service_port = 8000
|
||||
service_port = [8000]
|
||||
database = {
|
||||
image = "docker.io/library/postgres:15" }
|
||||
redis = {
|
||||
@@ -576,7 +576,7 @@ kubernetes = {
|
||||
name = "gotenberg"
|
||||
connected_namespace = "paper"
|
||||
image = "gotenberg/gotenberg:7.9.2"
|
||||
service_port = 3000
|
||||
service_port = [3000]
|
||||
|
||||
requirements = {
|
||||
limits-cpu = "100m"
|
||||
@@ -592,7 +592,7 @@ kubernetes = {
|
||||
name = "tika"
|
||||
connected_namespace = "paper"
|
||||
image = "ghcr.io/paperless-ngx/tika"
|
||||
service_port = 9998
|
||||
service_port = [9998]
|
||||
|
||||
requirements = {
|
||||
limits-cpu = "100m"
|
||||
@@ -613,7 +613,7 @@ kubernetes = {
|
||||
namespace = "next"
|
||||
replicas = 01
|
||||
image = "nextcloud:29.0.3-apache"
|
||||
service_port = 80
|
||||
service_port = [80]
|
||||
extra_manifest = ["/opt/kubernetes/Nextcloud_kube/next.secret.yaml"]
|
||||
database = {
|
||||
image = "docker.io/library/postgres:14" }
|
||||
@@ -705,7 +705,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
name = "neko"
|
||||
image = "ghcr.io/m1k1o/neko/firefox:latest"
|
||||
service_port = 8080
|
||||
service_port = [8080]
|
||||
|
||||
environment = {
|
||||
|
||||
@@ -735,7 +735,7 @@ kubernetes = {
|
||||
homeassistant = {
|
||||
enabled = false
|
||||
image = "ghcr.io/home-assistant/home-assistant:stable"
|
||||
service_port = 8123
|
||||
service_port = [8123]
|
||||
|
||||
environment = {
|
||||
|
||||
@@ -770,7 +770,7 @@ kubernetes = {
|
||||
# enabled = false
|
||||
replicas = 0
|
||||
image = "jellyfin/jellyfin:latest"
|
||||
service_port = 8096
|
||||
service_port = [8096]
|
||||
|
||||
environment = {
|
||||
|
||||
@@ -809,7 +809,7 @@ kubernetes = {
|
||||
dupeguru = {
|
||||
enabled = false
|
||||
image = "jlesage/dupeguru"
|
||||
service_port = 5800
|
||||
service_port = [5800]
|
||||
|
||||
pvc = {
|
||||
dupeguru-config = {
|
||||
@@ -843,7 +843,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
connected_namespace = "screeps"
|
||||
image = "ghcr.io/kieraneglin/pinchflat:latest"
|
||||
service_port = 8945
|
||||
service_port = [8945]
|
||||
|
||||
pvc = {
|
||||
pinchflat-config = {
|
||||
@@ -871,7 +871,7 @@ kubernetes = {
|
||||
enabled = false
|
||||
connected_namespace = "stash"
|
||||
image = "rainmanjam/jobspy-api:latest"
|
||||
service_port = 8000
|
||||
service_port = [8000]
|
||||
environment = {
|
||||
ENABLE_API_KEY_AUTH = {
|
||||
value = "true"
|
||||
@@ -896,7 +896,7 @@ kubernetes = {
|
||||
namespace = "servarr"
|
||||
#replicas = 0
|
||||
# dns_nameservers = "10.2.0.1"
|
||||
service_port = 9696
|
||||
service_port = [9696]
|
||||
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/servarr/servarr-db.secret.yaml"]
|
||||
database = {}
|
||||
|
||||
@@ -940,12 +940,6 @@ kubernetes = {
|
||||
|
||||
|
||||
}
|
||||
# requirements = {
|
||||
# limits-cpu = "1000m"
|
||||
# limits-memory = "1Gi"
|
||||
# requests-cpu = "500m"
|
||||
# requests-memory = "400Mi"
|
||||
# }
|
||||
pvc = {
|
||||
prowlarr-config = {
|
||||
name = "prowlarr-config"
|
||||
@@ -963,12 +957,13 @@ kubernetes = {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
radarr = {
|
||||
#enabled = false
|
||||
image = "lscr.io/linuxserver/radarr:latest"
|
||||
connected_namespace = "servarr"
|
||||
service_port = 7878
|
||||
#replicas = 0
|
||||
service_port = [7878]
|
||||
|
||||
environment = {
|
||||
PUID = {
|
||||
@@ -1010,8 +1005,9 @@ kubernetes = {
|
||||
#enabled = false
|
||||
image = "lscr.io/linuxserver/sonarr:latest"
|
||||
connected_namespace = "servarr"
|
||||
service_port = 8989
|
||||
#replicas = 0
|
||||
service_port = [8989]
|
||||
|
||||
environment = {
|
||||
PUID = {
|
||||
value = "1000"
|
||||
@@ -1051,7 +1047,7 @@ kubernetes = {
|
||||
#enabled = false
|
||||
image = "lscr.io/linuxserver/qbittorrent:latest"
|
||||
connected_namespace = "servarr"
|
||||
service_port = 8080
|
||||
service_port = [8080]
|
||||
|
||||
environment = {
|
||||
PUID = {
|
||||
@@ -1094,12 +1090,14 @@ kubernetes = {
|
||||
|
||||
|
||||
flaresolverr = {
|
||||
# enabled = false
|
||||
#image = "ghcr.io/flaresolverr/flaresolverr:latest"
|
||||
image = "alexfozor/flaresolverr:pr-1300-experimental"
|
||||
|
||||
connected_namespace = "servarr"
|
||||
service_port = 8191
|
||||
enabled = false
|
||||
image = "ghcr.io/flaresolverr/flaresolverr:latest"
|
||||
connected_namespace = "tservarr"
|
||||
service_port = [8191]
|
||||
|
||||
environment = {
|
||||
PUID = {
|
||||
@@ -1127,7 +1125,7 @@ kubernetes = {
|
||||
poste = {
|
||||
enabled = false
|
||||
image = "analogic/poste.io:latest"
|
||||
service_port = 443
|
||||
service_port = [25,80,110,143,443,465,587,993,995,4190]
|
||||
|
||||
environment = {
|
||||
PUID = {
|
||||
@@ -1161,7 +1159,7 @@ kubernetes = {
|
||||
wikijs = {
|
||||
#enabled = false
|
||||
image = "ghcr.io/requarks/wiki:2.5"
|
||||
service_port = 3000
|
||||
service_port = [3000]
|
||||
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/wikijs/wikijs-db.secret.yaml"]
|
||||
database = {}
|
||||
environment = {
|
||||
|
||||
Reference in New Issue
Block a user