summaryrefslogtreecommitdiff
path: root/playbooks.d/k3s-master/playbook.bash
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks.d/k3s-master/playbook.bash')
-rw-r--r--playbooks.d/k3s-master/playbook.bash79
1 files changed, 51 insertions, 28 deletions
diff --git a/playbooks.d/k3s-master/playbook.bash b/playbooks.d/k3s-master/playbook.bash
index 351064c..270e0cb 100644
--- a/playbooks.d/k3s-master/playbook.bash
+++ b/playbooks.d/k3s-master/playbook.bash
@@ -1,40 +1,63 @@
#!/usr/bin/env bash
playbook_add() {
- info "$BASHTARD_PLAYBOOK" "Writing config.yaml for k3s"
+ pkg install curl
+
+ info "$BASHTARD_PLAYBOOK/add" "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"
+ {
+ cat <<-EOF
+ node-name: "${BASHTARD_PLATFORM[fqdn]}"
+ node-ip: "$(config "$BASHTARD_PLAYBOOK.internal-ip" "127.0.0.1")"
+ bind-address: "$(config "$BASHTARD_PLAYBOOK.bind-address" "0.0.0.0")"
+ cluster-cidr: "$(config "$BASHTARD_PLAYBOOK.cluster-cidr" "172.19.0.0/16")"
+ service-cidr: "$(config "$BASHTARD_PLAYBOOK.service-cidr" "172.20.0.0/16")"
+ cluster-domain: "$(config "$BASHTARD_PLAYBOOK.cluster-domain" "cluster.local")"
+ service-node-port-range: "$(config "$BASHTARD_PLAYBOOK.service-node-port-min" "30000")-$(config "$BASHTARD_PLAYBOOK.service-node-port-max" "32767")"
+ flannel-ipv6-masq: true
+ disable:
+ - traefik
+ EOF
+
+ if [[ -n "$(config_subkeys "$BASHTARD_PLAYBOOK.flannel.interfaces")" ]]
+ then
+ printf "flannel-iface:\n"
+
+ while read -r iface
+ do
+ printf -- "- %s\n" "$(config "$BASHTARD_PLAYBOOK.flannel.interfaces.$iface")"
+ done < <( config_subkeys "$BASHTARD_PLAYBOOK.flannel.interfaces" )
+ fi
+
+ if [[ -n "$(config "$BASHTARD_PLAYBOOK.external-ip" "")" ]]
+ then
+ printf "%s: \"%s\"\n" "node-external-ip" "$(config "$BASHTARD_PLAYBOOK.external-ip" "")"
+ fi
+ } > "$(config "fs.etcdir")/rancher/k3s/config.yaml"
+
+ info "$BASHTARD_PLAYBOOK/add" "Installing k3s"
+ curl -sfL https://get.k3s.io | sh -s - server --cluster-init # I hate this
+
+ notice "$BASHTARD_PLAYBOOK/add" "Creating data directories"
+ mkdir -pv -- "$(playbook_path "data")/manifests.d"
+
+ notice "$BASHTARD_PLAYBOOK/add" "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_sync() {
- :;
+ local data
+ local kubeconfig
+ local manifest_prefix
+ local values
+
+ data="$(playbook_path "data")"
+ kubeconfig="$(config "fs.etcdir")/rancher/k3s/k3s.yaml"
+
+ notice "$BASHTARD_PLAYBOOK/sync" "Applying manifests.d"
+ kubectl --kubeconfig "$kubeconfig" apply --recursive --filename "$data/manifests.d" || true
}
playbook_del() {