summaryrefslogtreecommitdiff
path: root/playbooks.d/k3s-master
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2023-04-03 10:07:48 +0200
committerPatrick Spek <p.spek@tyil.nl>2023-04-03 10:07:58 +0200
commitfa0cc1cfb28727d625b601517f41054aa5ba595d (patch)
tree507a2d88b727af4bc64c608685e6bfe48ff48735 /playbooks.d/k3s-master
parent34f830ccd494835d38b43b6c1216c90c577201b1 (diff)
Add new k3s-master playbook
Diffstat (limited to 'playbooks.d/k3s-master')
-rw-r--r--playbooks.d/k3s-master/description.txt1
-rw-r--r--playbooks.d/k3s-master/etc/defaults8
-rw-r--r--playbooks.d/k3s-master/etc/os.d/linux-gentoo2
-rw-r--r--playbooks.d/k3s-master/playbook.bash65
4 files changed, 76 insertions, 0 deletions
diff --git a/playbooks.d/k3s-master/description.txt b/playbooks.d/k3s-master/description.txt
new file mode 100644
index 0000000..bf1fbab
--- /dev/null
+++ b/playbooks.d/k3s-master/description.txt
@@ -0,0 +1 @@
+Playbook for a k3s node
diff --git a/playbooks.d/k3s-master/etc/defaults b/playbooks.d/k3s-master/etc/defaults
new file mode 100644
index 0000000..eab4aee
--- /dev/null
+++ b/playbooks.d/k3s-master/etc/defaults
@@ -0,0 +1,8 @@
+pkg.k3s=k3s
+pkg.helm=helm
+
+k3s.domain=cluster.local
+k3s.network.cidr.pods=172.19.0.0/16
+k3s.network.cidr.svcs=172.20.0.0/16
+k3s.network.service.dns=172.20.0.53
+k3s.flux.repo.branch=master
diff --git a/playbooks.d/k3s-master/etc/os.d/linux-gentoo b/playbooks.d/k3s-master/etc/os.d/linux-gentoo
new file mode 100644
index 0000000..4aaaabf
--- /dev/null
+++ b/playbooks.d/k3s-master/etc/os.d/linux-gentoo
@@ -0,0 +1,2 @@
+pkg.k3s=sys-cluster/k3s
+pkg.helm=app-admin/helm
diff --git a/playbooks.d/k3s-master/playbook.bash b/playbooks.d/k3s-master/playbook.bash
new file mode 100644
index 0000000..cc6cd29
--- /dev/null
+++ b/playbooks.d/k3s-master/playbook.bash
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+
+playbook_add() {
+ # TODO: Install kubectl, helm!
+ info "$BASHTARD_PLAYBOOK" "Installing k3s"
+ curl -sfL https://get.k3s.io | sh - # I hate this
+
+ notice "$BASHTARD_PLAYBOOK" "Creating data directories"
+ mkdir -pv -- "$(playbook_path "data")/manifests.d"
+ mkdir -pv -- "$(playbook_path "data")/helm.d"
+
+ notice "$BASHTARD_PLAYBOOK" "Waiting for node to become available"
+ { grep -q -m 1 "${BASHTARD_PLATFORM[fqdn]}[[:space:]]\+Ready"; kill $!; } < <(k3s kubectl get node -w)
+
+ playbook_sync
+}
+
+playbook_sync() {
+ local data
+ local helm_cmd
+ local kubeconfig
+
+ data="$(playbook_path "data")"
+ kubeconfig="$(config "fs.etcdir")/rancher/k3s/k3s.yaml"
+
+ notice "$BASHTARD_PLAYBOOK/manifests" "Applying manifests.d"
+ kubectl --kubeconfig "$kubeconfig" apply --recursive --filename "$data/manifests.d"
+
+ notice "$BASHTARD_PLAYBOOK/helm" "Ensure all Helm repos exist"
+ while read -r repo
+ do
+ helm repo add "$repo" "$(config "$BASHTARD_PLAYBOOK.helm.repos.$repo.url")"
+ done < <(config_subkeys "$BASHTARD_PLAYBOOK.helm.repos")
+
+ notice "$BASHTARD_PLAYBOOK/helm" "Updating Helm repository contents"
+ helm repo update
+
+ notice "$BASHTARD_PLAYBOOK/helm" "Upgrading Helm charts"
+ while read -r app
+ do
+ helm_cmd=(
+ "helm" "upgrade"
+ "--install"
+ "--kubeconfig" "$kubeconfig"
+ "--timeout" "$(config "$BASHTARD_PLAYBOOK.helm.timeout" "30s")"
+ "--namespace" "$(config "$BASHTARD_PLAYBOOK.helm.apps.$app.namespace" "default")"
+ )
+
+ # Add values
+ helm_cmd+=("--values" "$data/helm.d/$(config "$BASHTARD_PLAYBOOK.helm.apps.$app.values")")
+
+ # Set which chart to upgrade
+ helm_cmd+=("$app")
+ helm_cmd+=("$(config "$BASHTARD_PLAYBOOK.helm.apps.$app.repo")/$(config "$BASHTARD_PLAYBOOK.helm.apps.$app.chart")")
+
+ notice "$BASHTARD_PLAYBOOK/helm/$app" "> ${helm_cmd[*]}"
+ ${helm_cmd[@]}
+
+ unset helm_cmd
+ done < <(config_subkeys "$BASHTARD_PLAYBOOK.helm.apps")
+}
+
+playbook_del() {
+ /usr/local/bin/k3s-uninstall.sh
+}