summaryrefslogtreecommitdiff
path: root/playbooks.d/k3s-master/playbook.bash
blob: 351064cf0112a30edff3f8d58c5a75fbef7e3e41 (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
#!/usr/bin/env bash

playbook_add() {
	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
	curl -L https://github.com/fluxcd/flux2/releases/download/v0.31.5/flux_0.31.5_linux_amd64.tar.gz | tar xzf - -C /usr/local/bin

	notice "$BASHTARD_PLAYBOOK" "Waiting for node to become available"
	{ grep -q -m 1 "${BASHTARD_PLATFORM[fqdn]}[[:space:]]\+Ready"; kill $!; } < <(k3s kubectl get node -w)

	info "$BASHTARD_PLAYBOOK" "Installing flux-system on k3s"
	flux bootstrap git \
		--branch="$(config "k3s.flux.repo.branch")" \
		--cluster-domain="$(config "k3s.domain")" \
		--kubeconfig=/etc/rancher/k3s/k3s.yaml \
		--path="$(config "k3s.flux.repo.path" "playbooks.d/$BASHTARD_PLAYBOOK/manifests/clusters/${BASHTARD_PLATFORM[fqdn]}")" \
		--private-key-file="$(config "k3s.flux.repo.privkey" "$HOME/.ssh/id.d/$USER@$(hostname -s)-ed25519")" \
		--silent \
		--url="$(config "k3s.flux.repo.url")"
}

playbook_sync() {
	:;
}

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