From c9669a8787618e25781a83524932e03a25fa3068 Mon Sep 17 00:00:00 2001 From: GigiaJ Date: Fri, 29 Aug 2025 10:14:28 -0500 Subject: [PATCH] Move and create project files --- iac/app-services/Pulumi.yaml | 11 +++++++++ iac/app-services/package.json | 20 ++++++++++++++++ iac/app-services/shadow-cljs.edn | 8 +++++++ iac/core/Pulumi.yaml | 11 +++++++++ iac/core/package.json | 20 ++++++++++++++++ iac/core/shadow-cljs.edn | 8 +++++++ iac/package.json | 31 ++++++++++++------------- iac/resources/nextcloud.yml | 39 ++++++++++++++++++++++++++++++++ iac/resources/openbao.yml | 17 ++++++++++++++ iac/shadow-cljs.edn | 6 ----- 10 files changed, 149 insertions(+), 22 deletions(-) create mode 100644 iac/app-services/Pulumi.yaml create mode 100644 iac/app-services/package.json create mode 100644 iac/app-services/shadow-cljs.edn create mode 100644 iac/core/Pulumi.yaml create mode 100644 iac/core/package.json create mode 100644 iac/core/shadow-cljs.edn create mode 100644 iac/resources/nextcloud.yml create mode 100644 iac/resources/openbao.yml delete mode 100644 iac/shadow-cljs.edn diff --git a/iac/app-services/Pulumi.yaml b/iac/app-services/Pulumi.yaml new file mode 100644 index 0000000..9a8d850 --- /dev/null +++ b/iac/app-services/Pulumi.yaml @@ -0,0 +1,11 @@ +name: hetzner-k3s +description: A multi-region k3s cluster on Hetzner Cloud +runtime: + name: nodejs + options: + packagemanager: npm +main: out/services.js +config: + pulumi:tags: + value: + pulumi:template: typescript \ No newline at end of file diff --git a/iac/app-services/package.json b/iac/app-services/package.json new file mode 100644 index 0000000..ad487ea --- /dev/null +++ b/iac/app-services/package.json @@ -0,0 +1,20 @@ +{ + "name": "app-services", + "scripts": { + "build": "npx shadow-cljs release app" + }, + "devDependencies": { + "@types/node": "^18", + "shadow-cljs": "^2.20.0", + "typescript": "^5.0.0" + }, + "dependencies": { + "@pulumi/pulumi": "^3.113.0", + "@pulumi/hcloud": "^1.24.0", + "@pulumi/esc-sdk": "0.12.1", + "@pulumi/command": "^1.1.0", + "@pulumi/kubernetes": "^4.23.0", + "@pulumi/vault": "^7.2.1", + "uuid":"^11.1.0" + } +} diff --git a/iac/app-services/shadow-cljs.edn b/iac/app-services/shadow-cljs.edn new file mode 100644 index 0000000..9a87340 --- /dev/null +++ b/iac/app-services/shadow-cljs.edn @@ -0,0 +1,8 @@ +{:source-paths ["../src/main"] + :dependencies [] + :builds + {:app {:target :node-script + :output-to "../out/services.js" + :compiler-options {:optimizations :simple} + :release {:source-maps true} + :main core/main!}}} \ No newline at end of file diff --git a/iac/core/Pulumi.yaml b/iac/core/Pulumi.yaml new file mode 100644 index 0000000..25c5f86 --- /dev/null +++ b/iac/core/Pulumi.yaml @@ -0,0 +1,11 @@ +name: hetzner-k3s +description: A multi-region k3s cluster on Hetzner Cloud +runtime: + name: nodejs + options: + packagemanager: npm +main: out/init.js +config: + pulumi:tags: + value: + pulumi:template: typescript \ No newline at end of file diff --git a/iac/core/package.json b/iac/core/package.json new file mode 100644 index 0000000..8344c5b --- /dev/null +++ b/iac/core/package.json @@ -0,0 +1,20 @@ +{ + "name": "core", + "scripts": { + "build": "npx shadow-cljs release app" + }, + "devDependencies": { + "@types/node": "^18", + "shadow-cljs": "^2.20.0", + "typescript": "^5.0.0" + }, + "dependencies": { + "@pulumi/pulumi": "^3.113.0", + "@pulumi/hcloud": "^1.24.0", + "@pulumi/esc-sdk": "0.12.1", + "@pulumi/command": "^1.1.0", + "@pulumi/kubernetes": "^4.23.0", + "@pulumi/vault": "^7.2.1", + "uuid":"^11.1.0" + } +} diff --git a/iac/core/shadow-cljs.edn b/iac/core/shadow-cljs.edn new file mode 100644 index 0000000..3f74445 --- /dev/null +++ b/iac/core/shadow-cljs.edn @@ -0,0 +1,8 @@ +{:source-paths ["../src/main"] + :dependencies [] + :builds + {:app {:target :node-script + :output-to "../out/init.js" + :compiler-options {:optimizations :simple} + :release {:source-maps true} + :main core/init!}}} \ No newline at end of file diff --git a/iac/package.json b/iac/package.json index 5ad2318..38db362 100644 --- a/iac/package.json +++ b/iac/package.json @@ -1,23 +1,22 @@ { - "name": "vultr-k8s", - "main": "index.js", - "scripts": { + "name": "my-pulumi-iac-monorepo", + "private": true, + "workspaces": [ + "core", + "app-services" + ], + "scripts": { "test": "npx shadow-cljs watch app", - "build": "shadow-cljs release app", - "pulumi": "pulumi up", + "build:core": "npm run build -w core", + "build:services": "npm run build -w app-services", + "up:core": "pulumi up -C ./out", + "up:services": "pulumi up -C ./app-services", + "destroy": "pulumi destroy -C ./app-services", "deploy": "npm run build && npm run pulumi" - }, - "devDependencies": { + }, + "devDependencies": { "@types/node": "^18", "shadow-cljs": "^2.20.0", "typescript": "^5.0.0" - }, - "dependencies": { - "@pulumi/pulumi": "^3.113.0", - "@pulumi/hcloud": "^1.24.0", - "@pulumi/esc-sdk": "0.12.1", - "@pulumi/command": "^1.1.0", - "@pulumi/kubernetes": "^4.23.0", - "@pulumi/vault": "^7.2.1" } -} +} \ No newline at end of file diff --git a/iac/resources/nextcloud.yml b/iac/resources/nextcloud.yml new file mode 100644 index 0000000..43fc492 --- /dev/null +++ b/iac/resources/nextcloud.yml @@ -0,0 +1,39 @@ +ingress: + enabled: true + className: "traefik" + hosts: + - host: nextcloud.your-domain.com # This will be overwritten by Pulumi + paths: + - path: / + pathType: ImplementationSpecific + +nextcloud: + username: "admin" + nodeSelector: + location: de + +persistence: + enabled: true + size: 25Gi + storageClass: "hcloud-volumes" + +mariadb: + enabled: true + volumePermissions: + enabled: true + securityContext: + runAsUser: 0 + securityContext: + enabled: true + fsGroup: 1001 + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsGroup: 1001 + nodeSelector: + location: de + +redis: + enabled: true + nodeSelector: + location: de diff --git a/iac/resources/openbao.yml b/iac/resources/openbao.yml new file mode 100644 index 0000000..b308eb4 --- /dev/null +++ b/iac/resources/openbao.yml @@ -0,0 +1,17 @@ +ui: + enabled: true + +server: + standalone: + enabled: true + + ha: + enabled: false + + dataStorage: + enabled: true + size: 2Gi + storageClass: "hcloud-volumes" + + nodeSelector: + location: "de" diff --git a/iac/shadow-cljs.edn b/iac/shadow-cljs.edn deleted file mode 100644 index 1357c18..0000000 --- a/iac/shadow-cljs.edn +++ /dev/null @@ -1,6 +0,0 @@ -{:source-paths ["src/main"] - :dependencies [] - :builds - {:app {:target :node-script - :output-to "index.js" - :main core/main!}}} \ No newline at end of file