Change to pass needed configurations to future stacks much easier

This commit is contained in:
2025-10-19 01:47:22 -05:00
parent ee88e9317f
commit e31e66da94

View File

@@ -18,11 +18,26 @@
:workDir "/home/jaggar/dotfiles/iac" :workDir "/home/jaggar/dotfiles/iac"
:program base/quick-deploy-shared})) :program base/quick-deploy-shared}))
(def prepare-deployment-stack (clj->js {:projectName "hetzner-k3s"
:stackName "prepare"
:workDir "/home/jaggar/dotfiles/iac"
:program base/quick-deploy-prepare}))
(def deployment-stack (clj->js {:projectName "hetzner-k3s" (def deployment-stack (clj->js {:projectName "hetzner-k3s"
:stackName "deployment" :stackName "deployment"
:workDir "/home/jaggar/dotfiles/iac" :workDir "/home/jaggar/dotfiles/iac"
:program base/quick-deploy-services})) :program base/quick-deploy-services}))
(defn config-core [stack kubeconfig vault-token vault-address]
(p/do (.setConfig stack "hetzner-k3s:sshKeyName" #js {:value (-> cfg :sshKeyName) :secret false})
(.setConfig stack "hetzner-k3s:sshPersonalKeyName" #js {:value (-> cfg :sshPersonalKeyName) :secret false})
(.setConfig stack "hetzner-k3s:privateKeySsh" #js {:value (-> cfg :privateKeySsh) :secret true})
(.setConfig stack "kubeconfig" #js {:value kubeconfig :secret true})
(.setConfig stack "vault:token" #js {:value vault-token :secret true})
(.setConfig stack "hcloud:token" #js {:value (-> cfg :hcloudToken) :secret true})
(.setConfig stack "vault:address" #js {:value vault-address :secret true})
(.setConfig stack "hetzner-k3s:apiToken" #js {:value (-> cfg :apiToken) :secret true})))
(defn run [] (defn run []
(p/let [_ (println "Deploying cluster") (p/let [_ (println "Deploying cluster")
@@ -60,38 +75,36 @@
"-n" "-n"
"vault"]) "vault"])
_ (p/delay 2000) _ (p/delay 3000)
shared-stack (.createOrSelectStack pulumi-auto/LocalWorkspace shared-stack (.createOrSelectStack pulumi-auto/LocalWorkspace
shared-platform-stack) shared-platform-stack)
_ (.setConfig shared-stack "hetzner-k3s:sshKeyName" #js {:value (-> cfg :sshKeyName) :secret false}) _ (config-core shared-stack kubeconfig vault-token vault-address)
_ (.setConfig shared-stack "hetzner-k3s:sshPersonalKeyName" #js {:value (-> cfg :sshPersonalKeyName) :secret false})
_ (.setConfig shared-stack "hcloud:token" #js {:value (-> cfg :hcloudToken) :secret true})
_ (.setConfig shared-stack "kubeconfig" #js {:value kubeconfig :secret true})
_ (.setConfig shared-stack "vault:token" #js {:value vault-token :secret true})
_ (.setConfig shared-stack "vault:address" #js {:value vault-address :secret true})
_ (.setConfig shared-stack "hetzner-k3s:apiToken" #js {:value (-> cfg :apiToken) :secret true})
shared-results (.up shared-stack #js {:onOutput println}) shared-results (.up shared-stack #js {:onOutput println})
shared-outputs (.outputs shared-stack) shared-outputs (.outputs shared-stack)
_ (println shared-outputs) _ (println shared-outputs)
_ (p/delay 2000)
prepare-stack (.createOrSelectStack pulumi-auto/LocalWorkspace
prepare-deployment-stack)
_ (config-core prepare-stack kubeconfig vault-token vault-address)
prepare-results (.up prepare-stack #js {:onOutput println})
prepare-outputs (.outputs prepare-stack)
_ (println prepare-outputs)
_ (p/delay 3000) _ (p/delay 3000)
app-stack (.createOrSelectStack pulumi-auto/LocalWorkspace app-stack (.createOrSelectStack pulumi-auto/LocalWorkspace
deployment-stack) deployment-stack)
_ (.setConfig app-stack "hetzner-k3s:sshKeyName" #js {:value (-> cfg :sshKeyName) :secret false})
_ (.setConfig app-stack "hetzner-k3s:sshPersonalKeyName" #js {:value (-> cfg :sshPersonalKeyName) :secret false})
_ (.setConfig app-stack "hetzner-k3s:privateKeySsh" #js {:value (-> cfg :privateKeySsh) :secret true})
_ (.setConfig app-stack "kubeconfig" #js {:value kubeconfig :secret true})
_ (.setConfig app-stack "vault:token" #js {:value vault-token :secret true})
_ (.setConfig app-stack "hcloud:token" #js {:value (-> cfg :hcloudToken) :secret true})
_ (.setConfig app-stack "vault:address" #js {:value vault-address :secret true})
_ (.setConfig app-stack "hetzner-k3s:apiToken" #js {:value (-> cfg :apiToken) :secret true})
;; app-result (.up app-stack #js {:onOutput println}) _ (config-core app-stack kubeconfig vault-token vault-address)
;; app-outputs (.outputs app-stack) app-result (.up app-stack #js {:onOutput println})
;; _ (println app-outputs)
app-outputs (.outputs app-stack)
_ (println app-outputs)
_ (.kill port-forward)] _ (.kill port-forward)]
"All stacks deployed and cleaned up successfully.")) "All stacks deployed and cleaned up successfully."))