Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85026544e8 | ||
|
|
810fa2951a | ||
|
|
9f83ec215b | ||
|
|
cbf2a33440 | ||
|
|
3ff155e3e6 |
@@ -1,11 +1,59 @@
|
|||||||
terraform {
|
terraform {
|
||||||
required_version = "> 0.8.0"
|
required_version = "> 0.8.0"
|
||||||
|
required_providers {
|
||||||
|
bitwarden = {
|
||||||
|
source = "maxlaverse/bitwarden"
|
||||||
|
version = ">= 0.13.6"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "kubernetes" {
|
provider "kubernetes" {
|
||||||
config_path = "~/.kube/config"
|
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" {
|
variable "kubernetes" {
|
||||||
type = map(object({
|
type = map(object({
|
||||||
@@ -118,7 +166,7 @@ locals {
|
|||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "kubernetes_manifest" "service" {
|
resource "kubernetes_manifest" "manifest" {
|
||||||
for_each = { for item in local.kubernetes_manifests : item.key => item }
|
for_each = { for item in local.kubernetes_manifests : item.key => item }
|
||||||
|
|
||||||
manifest = yamldecode(file(each.value.manifest))
|
manifest = yamldecode(file(each.value.manifest))
|
||||||
@@ -210,6 +258,7 @@ resource "kubernetes_service" "automatic_service" {
|
|||||||
content {
|
content {
|
||||||
port = port.value
|
port = port.value
|
||||||
target_port = port.value
|
target_port = port.value
|
||||||
|
name = replace("${each.key}${port.value}", "/(.{0,15})(.*)/", "$1")
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -310,7 +359,8 @@ resource "kubernetes_deployment_v1" "automatic" {
|
|||||||
for_each = each.value.service_port != null ? each.value.service_port : []
|
for_each = each.value.service_port != null ? each.value.service_port : []
|
||||||
content {
|
content {
|
||||||
container_port = port.value
|
container_port = port.value
|
||||||
name = "${each.key}-${port.value}"
|
# name = "${each.key}-${port.value}"
|
||||||
|
name = replace("${each.key}${port.value}", "/(.{0,15})(.*)/", "$1")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+27
-12
@@ -6,18 +6,18 @@ kubernetes = {
|
|||||||
extra_manifest = ["/opt/kubernetes/Bookstack_kube/Bookstack.configmap.yaml", "/opt/kubernetes/Bookstack_kube/Bookstack.secret.yaml"]
|
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:24.10.3"
|
||||||
image = "linuxserver/bookstack:latest"
|
image = "linuxserver/bookstack:latest"
|
||||||
service_port = [80,443]
|
service_port = [80, 443]
|
||||||
database = {
|
database = {
|
||||||
"image" = "lscr.io/linuxserver/mariadb"
|
"image" = "lscr.io/linuxserver/mariadb"
|
||||||
"port" = 3306
|
"port" = 3306
|
||||||
"mountPath" = "/config"
|
"mountPath" = "/config"
|
||||||
}
|
}
|
||||||
# requirements = {
|
# requirements = {
|
||||||
# limits-cpu = "18m"
|
# limits-cpu = "18m"
|
||||||
# limits-memory = "100Mi"
|
# limits-memory = "100Mi"
|
||||||
# requests-cpu = "10m"
|
# requests-cpu = "10m"
|
||||||
# requests-memory = "70Mi"
|
# requests-memory = "70Mi"
|
||||||
# }
|
# }
|
||||||
secret_ref = ["bookstack-credentials"]
|
secret_ref = ["bookstack-credentials"]
|
||||||
config_map_ref = ["config"]
|
config_map_ref = ["config"]
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ kubernetes = {
|
|||||||
dns_nameservers = "10.2.0.1"
|
dns_nameservers = "10.2.0.1"
|
||||||
replicas = 01
|
replicas = 01
|
||||||
image = "qmcgaw/gluetun:latest"
|
image = "qmcgaw/gluetun:latest"
|
||||||
service_port = 8888
|
service_port = [8888]
|
||||||
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/gluetun/gluetun-secret-netherland.yaml"]
|
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/gluetun/gluetun-secret-netherland.yaml"]
|
||||||
security_context = true
|
security_context = true
|
||||||
# requirements = {
|
# requirements = {
|
||||||
@@ -896,7 +896,7 @@ kubernetes = {
|
|||||||
namespace = "servarr"
|
namespace = "servarr"
|
||||||
#replicas = 0
|
#replicas = 0
|
||||||
# dns_nameservers = "10.2.0.1"
|
# 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"]
|
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/servarr/servarr-db.secret.yaml"]
|
||||||
database = {}
|
database = {}
|
||||||
|
|
||||||
@@ -940,6 +940,21 @@ kubernetes = {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
pvc = {
|
||||||
|
prowlarr-config = {
|
||||||
|
name = "prowlarr-config"
|
||||||
|
pvc_size = "10Mi"
|
||||||
|
pvc = true
|
||||||
|
mount_path = "/config"
|
||||||
|
}
|
||||||
|
servarr-data = {
|
||||||
|
name = "servarr-data"
|
||||||
|
pvc_size = "10Mi"
|
||||||
|
pvc = false
|
||||||
|
host_path = "/data"
|
||||||
|
mount_path = "/disk"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1032,7 +1047,7 @@ kubernetes = {
|
|||||||
#enabled = false
|
#enabled = false
|
||||||
image = "lscr.io/linuxserver/qbittorrent:latest"
|
image = "lscr.io/linuxserver/qbittorrent:latest"
|
||||||
connected_namespace = "servarr"
|
connected_namespace = "servarr"
|
||||||
service_port = 8080
|
service_port = [8080]
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
PUID = {
|
PUID = {
|
||||||
@@ -1110,7 +1125,7 @@ kubernetes = {
|
|||||||
poste = {
|
poste = {
|
||||||
enabled = false
|
enabled = false
|
||||||
image = "analogic/poste.io:latest"
|
image = "analogic/poste.io:latest"
|
||||||
service_port = [443]
|
service_port = [25,80,110,143,443,465,587,993,995,4190]
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
PUID = {
|
PUID = {
|
||||||
@@ -1144,7 +1159,7 @@ kubernetes = {
|
|||||||
wikijs = {
|
wikijs = {
|
||||||
#enabled = false
|
#enabled = false
|
||||||
image = "ghcr.io/requarks/wiki:2.5"
|
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"]
|
extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/wikijs/wikijs-db.secret.yaml"]
|
||||||
database = {}
|
database = {}
|
||||||
environment = {
|
environment = {
|
||||||
|
|||||||
Reference in New Issue
Block a user