summaryrefslogtreecommitdiff
path: root/playbooks.d/k3s-master/playbook.bash
blob: 69a2e58f559331f9023a5e4f18bd2a1080ce6b0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env bash

playbook_add() {
	pkg install helm k3s

	info "$BASHTARD_PLAYBOOK" "Writing config.yaml for k3s"
	mkdir -pv -- /etc/rancher/k3s
	cat <<-EOF > /etc/rancher/k3s/config.yaml
	node-name: ${BASHTARD_PLATFORM[fqdn]}
	node-ip: $(config "k3s.network.ip" "$(config "vpn.ipv4" "127.0.0.1")")
	bind-address: $(config "k3s.network.bind" "$(config "vpn.ipv4" "0.0.0.0")")
	cluster-cidr: $(config "k3s.network.cidr.pods")
	service-cidr: $(config "k3s.network.cidr.svcs")
	cluster-dns: $(config "k3s.network.service.dns")
	cluster-domain: $(config "k3s.domain")
	disable:
	- traefik
	EOF

	info "$BASHTARD_PLAYBOOK" "Installing k3s"
	curl -sfL https://get.k3s.io | sh -  # I hate this

	export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
	export HELM_KUBECONTEXT=default

	info "$BASHTARD_PLAYBOOK" "Installing ArgoCD on k3s"
	k3s kubectl create namespace argocd
	helm repo add argo https://argoproj.github.io/argo-helm
	helm install \
		-n argocd \
		-f "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/share/argocd/values.yaml" \
		argocd argo/argo-cd

	info "$BASHTARD_PLAYBOOK" "Waiting for argocd-server deployment to be ready"
	{ grep -q -m 1 "argocd-server[[:space:]]\+1/1"; kill $!; } < <(k3s kubectl get deployment -n argocd -w)

	info "$BASHTARD_PLAYBOOK" "Applying sealed-secrets manifest to k3s"
	k3s kubectl apply -Rf "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/share/system/sealed-secrets"

	info "$BASHTARD_PLAYBOOK" "Waiting for sealedsecrets.bitnami.com CRDs to become available"
	{ grep -q -m 1 "sealedsecrets.bitnami.com"; kill $!; } < <(k3s kubectl get crd -w)

	playbook_sync
}

playbook_sync() {
	info "$BASHTARD_PLAYBOOK" "Applying system manifests"
	k3s kubectl apply -Rf "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/share/system"

	info "$BASHTARD_PLAYBOOK" "Applying app manifests"
	k3s kubectl apply -R -n argocd -f "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/share/apps"
}

playbook_del() {
	/usr/local/bin/k3s-uninstall.sh
}