diff options
Diffstat (limited to 'playbooks.d/k3s-master/playbook.bash')
-rw-r--r-- | playbooks.d/k3s-master/playbook.bash | 79 |
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() { |