dda-build/src/dda/build/provs.clj

43 lines
1.6 KiB
Clojure
Raw Normal View History

2024-09-27 17:33:04 +02:00
(ns dda.build.provs
2025-01-08 10:32:22 +01:00
(:require [clojure.spec.alpha :as s]
[clojure.spec.test.alpha :as st]
[orchestra.core :refer [defn-spec]]
[cheshire.core :refer [generate-string]]
[dda.build.c4k :as c4k]
[dda.build.terragrunt :as tg]
2025-01-08 16:51:58 +01:00
[dda.build.config :as cfg]
2025-01-08 10:32:22 +01:00
[dda.build.provs.domain :as domain]
[dda.build.infrastructure :as i]))
2024-09-27 17:33:04 +02:00
(def default
2025-01-07 17:51:32 +01:00
(merge c4k/default
2025-01-08 16:51:58 +01:00
{:k3s-output-filename "out_k3sServerConfig.json"
:k3s-auth-input "k3s-auth.edn"
2025-01-07 17:51:32 +01:00
:k3s-provision-user "root"
:echo false}))
(s/def ::provs (s/merge ::c4k/c4k
2025-01-08 10:32:22 +01:00
(s/keys
2025-01-08 10:47:19 +01:00
:req-un [::domain/email]
2025-01-09 15:34:02 +01:00
:opt-un [::domain/echo ::domain/k3s-output-filename ::domain/k3s-provision-user
::domain/k3s-grafana-user ::domain/k3s-grafana-token
::domain/k3s-hcloudApiToken ::domain/k3s-encryptionPassphrase])))
2024-09-27 17:33:04 +02:00
(defn-spec run-provs-server! nil?
2025-01-07 17:51:32 +01:00
[devops ::provs
tf-out ::tg/tf-out]
2024-09-27 17:33:04 +02:00
(let [config (merge default devops)]
(doseq [c (domain/provs-server-command config tf-out)]
(i/execute! c config))))
(defn-spec write-k3s-config! nil?
2025-01-07 17:51:32 +01:00
[devops ::provs
tf-out ::tg/tf-out]
2025-01-08 16:51:58 +01:00
(let [config (merge default devops)]
(->> (domain/create-k3s-config
(merge (cfg/read-config (domain/auth-path config)) config)
tf-out)
2024-09-27 17:33:04 +02:00
(generate-string)
(spit (domain/output-path config)))))
(st/instrument `run-provs-server!)
(st/instrument `write-k3s-config!)