diff options
Diffstat (limited to 'playbooks.d')
21 files changed, 195 insertions, 286 deletions
diff --git a/playbooks.d/git-server/share/pubkeys.d/tyil@plarabe-ed25519.pub b/playbooks.d/git-server/share/pubkeys.d/tyil@plarabe-ed25519.pub new file mode 100644 index 0000000..25a5449 --- /dev/null +++ b/playbooks.d/git-server/share/pubkeys.d/tyil@plarabe-ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7XKD3KxXTe5GlM4w4xdap3VAPvYCi4EowD88ymInFR tyil@plarabe diff --git a/playbooks.d/k3s-master b/playbooks.d/k3s-master deleted file mode 160000 -Subproject 27d48e4dec3e2eee30d6000f16dc7eb8f67b85e 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..3cbca90 --- /dev/null +++ b/playbooks.d/k3s-master/etc/defaults @@ -0,0 +1,4 @@ +pkg.curl=curl +pkg.kubectl=kubectl +pkg.nfs-common=nfs-common +pkg.open-iscsi=open-iscsi 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..5e7bc08 --- /dev/null +++ b/playbooks.d/k3s-master/etc/os.d/linux-gentoo @@ -0,0 +1,2 @@ +pkg.nfs-common=net-fs/nfs-utils +pkg.open-iscsi=sys-block/open-iscsi diff --git a/playbooks.d/k3s-master/playbook.bash b/playbooks.d/k3s-master/playbook.bash new file mode 100644 index 0000000..270e0cb --- /dev/null +++ b/playbooks.d/k3s-master/playbook.bash @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +playbook_add() { + pkg install curl + + info "$BASHTARD_PLAYBOOK/add" "Writing config.yaml for k3s" + mkdir -pv -- /etc/rancher/k3s + { + 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) + + 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() { + /usr/local/bin/k3s-uninstall.sh +} diff --git a/playbooks.d/k3s-node/playbook.bash b/playbooks.d/k3s-node/playbook.bash index f2ae8d6..bc041df 100644 --- a/playbooks.d/k3s-node/playbook.bash +++ b/playbooks.d/k3s-node/playbook.bash @@ -1,35 +1,81 @@ #!/usr/bin/env bash BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.entry.host]="required" -BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.entry.token]="required" +BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.internal-ip]="required" playbook_add() { - pkg install curl nfs-common open-iscsi + local host + local role + local token - info "$BASHTARD_PLAYBOOK" "Writing config.yaml for k3s" - mkdir -pv -- /etc/rancher/k3s - cat <<-EOF > /etc/rancher/k3s/config.yaml - node-ip: "$(config "$BASHTARD_PLAYBOOK.node-ip" "$(config "bashtard.ssh.host")")" - node-name: "${BASHTARD_PLATFORM[fqdn]}" - server: "https://$(config "$BASHTARD_PLAYBOOK.entry.host"):$(config "$BASHTARD_PLAYBOOK.entry.port" "6443")" - token: "$(config "$BASHTARD_PLAYBOOK.entry.token")" - EOF - - if [[ "$(config "$BASHTARD_PLAYBOOK.role")" == "server" ]] + host="$(config "$BASHTARD_PLAYBOOK.entry.host")" + role="$(config "$BASHTARD_PLAYBOOK.role" "agent")" + token="$(config "$BASHTARD_PLAYBOOK.entry.token" "")" + + pkg install curl + + # If token is not supplied manually, attempt to fetch it from the entry + # host over ssh + if [[ -z "$token" ]] then - cat <<-EOF >> /etc/rancher/k3s/config.yaml - cluster-cidr: "$(config "$BASHTARD_PLAYBOOK.cluster-cidr" "172.19.0.0/16")" - cluster-domain: "$(config "$BASHTARD_PLAYBOOK.cluster-domain" "cluster.local")" - service-cidr: "$(config "$BASHTARD_PLAYBOOK.service-cidr" "172.20.0.0/16")" - service-node-port-range: "$(config "$BASHTARD_PLAYBOOK.service-node-port-min" "30000")-$(config "$BASHTARD_PLAYBOOK.service-node-port-max" "32767")" - EOF + # Dealing with an IPv6 address, strip away the brackets + if [[ "${host:0:1}" == "[" && "${host: -1}" == "]" ]] + then + host="${host:1:-1}" + fi + + info "$BASHTARD_PLAYBOOK/add" "Attempting to fetch token from $host" + token="$(ssh "$host" -- cat /var/lib/rancher/k3s/server/token)" + fi + + if [[ -z "$token" ]] + then + emerg "$BASHTARD_PLAYBOOK/add" "No entry token found, set one with bashtard var -s $BASHTARD_PLAYBOOK.entry.token <value>" + return 1 fi - info "$BASHTARD_PLAYBOOK" "Installing k3s" - curl -sfL https://get.k3s.io | sh -s - "$(config "$BASHTARD_PLAYBOOK.role" "agent")" + info "$BASHTARD_PLAYBOOK/add" "Writing config.yaml for k3s" + mkdir -pv -- /etc/rancher/k3s + { + cat <<-EOF + node-name: "${BASHTARD_PLATFORM[fqdn]}" + node-ip: "$(config "$BASHTARD_PLAYBOOK.internal-ip" "127.0.0.1")" + server: "https://$(config "$BASHTARD_PLAYBOOK.entry.host"):$(config "$BASHTARD_PLAYBOOK.entry.port" "6443")" + token: "$token" + 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 - notice "$BASHTARD_PLAYBOOK" "Waiting for node to become available" - { grep -q -m 1 "${BASHTARD_PLATFORM[fqdn]}[[:space:]]\+Ready"; kill $!; } < <(k3s kubectl get node -w) + if [[ -n "$(config "$BASHTARD_PLAYBOOK.external-ip" "")" ]] + then + printf "%s: \"%s\"\n" "node-external-ip" "$(config "$BASHTARD_PLAYBOOK.external-ip" "")" + fi + + if [[ "$role" == "server" ]] + then + info "$BASHTARD_PLAYBOOK/add" "Node is a server, adding master configuration" + cat <<-EOF >> /etc/rancher/k3s/config.yaml + cluster-cidr: "$(config "$BASHTARD_PLAYBOOK.cluster-cidr" "172.19.0.0/16")" + cluster-domain: "$(config "$BASHTARD_PLAYBOOK.cluster-domain" "cluster.local")" + service-cidr: "$(config "$BASHTARD_PLAYBOOK.service-cidr" "172.20.0.0/16")" + 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 + fi + } > "$(config "fs.etcdir")/rancher/k3s/config.yaml" + + info "$BASHTARD_PLAYBOOK/add" "Installing k3s" + curl -sfL https://get.k3s.io | sh -s - "$role" } playbook_sync() { @@ -37,5 +83,16 @@ playbook_sync() { } playbook_del() { - /usr/local/bin/k3s-uninstall.sh + local role + + role="$(config "$BASHTARD_PLAYBOOK.role" "agent")" + + case "$role" in + server) + /usr/local/bin/k3s-uninstall.sh + ;; + agent) + /usr/local/bin/k3s-agent-uninstall.sh + ;; + esac } diff --git a/playbooks.d/k8s-master/description.txt b/playbooks.d/k8s-master/description.txt deleted file mode 100644 index 60693ef..0000000 --- a/playbooks.d/k8s-master/description.txt +++ /dev/null @@ -1 +0,0 @@ -Playbook for a Kubernetes master node diff --git a/playbooks.d/k8s-master/etc/defaults b/playbooks.d/k8s-master/etc/defaults deleted file mode 100644 index 9506887..0000000 --- a/playbooks.d/k8s-master/etc/defaults +++ /dev/null @@ -1,4 +0,0 @@ -pkg.containerd=containerd -pkg.kubeadm=kubeadm -pkg.kubectl=kubectl -pkg.kubelet=kubelet diff --git a/playbooks.d/k8s-master/playbook.bash b/playbooks.d/k8s-master/playbook.bash deleted file mode 100644 index f423c00..0000000 --- a/playbooks.d/k8s-master/playbook.bash +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash - -playbook_add() { - local version - - version="1.29" - - case "${BASHTARD_PLATFORM[key]}" in - linux-debian_gnu_linux) - # Fetch the apt key - info "$BASHTARD_PLAYBOOK" "Adding apt repository" - mkdir -pv -m 755 -- /etc/apt/keyrings - curl -fsSL "https://pkgs.k8s.io/core:/stable:/v$version/deb/Release.key" \ - | gpg --dearmor \ - > /etc/apt/keyrings/kubernetes-apt-keyring.gpg - printf "deb [signed-by=%s] %s /\n" \ - "/etc/apt/keyrings/kubernetes-apt-keyring.gpg" \ - "https://pkgs.k8s.io/core:/stable:/v$version/deb/" \ - > /etc/apt/sources.list.d/kubernetes.list - apt update - ;; - esac - - pkg install containerd - pkg install kubeadm - pkg install kubectl - pkg install kubelet - - info "$BASHTARD_PLAYBOOK" "Enabling forwarding" - cat <<-EOF > "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" - net.bridge.bridge-nf-call-iptables = 1 - net.bridge.bridge-nf-call-ip6tables = 1 - net.ipv4.ip_forward = 1 - net.ipv6.conf.all.forwarding = 1 - EOF - - sysctl --system - - info "$BASHTARD_PLAYBOOK" "Enabling kernel modules" - cat <<-EOF > "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" - br_netfilter - overlay - EOF - - modprobe overlay - modprobe br_netfilter - - notice "$BASHTARD_PLAYBOOK" "Creating data directories" - mkdir -pv -- "$(playbook_path "data")/manifests.d" - - if [[ "$(config "$BASHTARD_PLAYBOOK.flags.apiserver-advertise-address" "")" != "" ]] - then - notice "$BASHTARD_PLAYBOOK" "Setting node ip in $(config "fs.etcdir")/default/kubelet" - cat <<-EOF > "$(config "fs.etcdir")/default/kubelet" - KUBELET_EXTRA_ARGS="--node-ip=$(config "$BASHTARD_PLAYBOOK.flags.apiserver-advertise-address")" - EOF - fi - - notice "$BASHTARD_PLAYBOOK" "Initialize kubeadm" - kubeadm init \ - --apiserver-advertise-address="$(config "$BASHTARD_PLAYBOOK.flags.apiserver-advertise-address" "127.0.0.1")" \ - --apiserver-bind-port="$(config "$BASHTARD_PLAYBOOK.flags.apiserver-bind-port" "6443")" \ - --control-plane-endpoint="$(config "$BASHTARD_PLAYBOOK.flags.control-plane-endpoint" "localhost")" \ - --node-name="${BASHTARD_PLATFORM[fqdn]}" \ - --service-cidr="$(config "$BASHTARD_PLAYBOOK.flags.service-cidr" "10.96.0.0/12")" \ - --service-dns-domain="$(config "$BASHTARD_PLAYBOOK.flags.service-dns-domain" "cluster.local")" \ - --pod-network-cidr="$(config "$BASHTARD_PLAYBOOK.flags.pod-network-cidr" "10.0.0.0/12")" \ - || return 1 - - playbook_sync - - return 0 -} - -playbook_sync() { - local data - local kubeconfig - local manifest_prefix - local values - - data="$(playbook_path "data")" - kubeconfig="$(config "fs.etcdir")/kubernetes/admin.conf" - manifest_prefix="$(config "$BASHTARD_PLAYBOOK.manifest-prefix" "")" - - notice "$BASHTARD_PLAYBOOK/manifests" "Applying manifests.d" - kubectl --kubeconfig "$kubeconfig" apply --recursive --filename "$data/manifests.d/$manifest_prefix" -} - -playbook_del() { - kubeadm reset --force - iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X - ipvsadm -C - rm -fr -- \ - "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" \ - "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" \ - "$(config "fs.etcdir")/cni/net.d" \ - "$(config "fs.etcdir")/kubernetes" \ - "/var/lib/etcd" \ - "/var/lib/cni" - - pkg uninstall kubectl - pkg uninstall kubeadm - pkg uninstall kubelet - pkg uninstall containerd - - case "${BASHTARD_PLATFORM[key]}" in - linux-debian_gnu_linux) - # Fetch the apt key - info "$BASHTARD_PLAYBOOK" "Removing apt repository" - rm -fr -- \ - /etc/apt/keyrings/kubernetes-apt-keyring.gpg \ - /etc/apt/sources.list.d/kubernetes.list - ;; - esac -} diff --git a/playbooks.d/k8s-node/description.txt b/playbooks.d/k8s-node/description.txt deleted file mode 100644 index 60693ef..0000000 --- a/playbooks.d/k8s-node/description.txt +++ /dev/null @@ -1 +0,0 @@ -Playbook for a Kubernetes master node diff --git a/playbooks.d/k8s-node/etc/defaults b/playbooks.d/k8s-node/etc/defaults deleted file mode 100644 index 9506887..0000000 --- a/playbooks.d/k8s-node/etc/defaults +++ /dev/null @@ -1,4 +0,0 @@ -pkg.containerd=containerd -pkg.kubeadm=kubeadm -pkg.kubectl=kubectl -pkg.kubelet=kubelet diff --git a/playbooks.d/k8s-node/playbook.bash b/playbooks.d/k8s-node/playbook.bash deleted file mode 100644 index fbf49e9..0000000 --- a/playbooks.d/k8s-node/playbook.bash +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env bash - -BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.cert-hash]="required" -BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.master.address]="required" -BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.token]="required" - -playbook_add() { - local version - - version="1.29" - - case "${BASHTARD_PLATFORM[key]}" in - linux-debian_gnu_linux) - # Fetch the apt key - info "$BASHTARD_PLAYBOOK" "Adding apt repository" - mkdir -pv -m 755 -- /etc/apt/keyrings - curl -fsSL "https://pkgs.k8s.io/core:/stable:/v$version/deb/Release.key" \ - | gpg --dearmor \ - > /etc/apt/keyrings/kubernetes-apt-keyring.gpg - printf "deb [signed-by=%s] %s /\n" \ - "/etc/apt/keyrings/kubernetes-apt-keyring.gpg" \ - "https://pkgs.k8s.io/core:/stable:/v$version/deb/" \ - > /etc/apt/sources.list.d/kubernetes.list - apt update - ;; - esac - - pkg install containerd - pkg install kubeadm - pkg install kubectl - pkg install kubelet - - info "$BASHTARD_PLAYBOOK" "Enabling forwarding" - cat <<-EOF > "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" - net.bridge.bridge-nf-call-iptables = 1 - net.bridge.bridge-nf-call-ip6tables = 1 - net.ipv4.ip_forward = 1 - net.ipv6.conf.all.forwarding = 1 - EOF - - sysctl --system - - info "$BASHTARD_PLAYBOOK" "Enabling kernel modules" - cat <<-EOF > "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" - br_netfilter - overlay - EOF - - modprobe overlay - modprobe br_netfilter - - if [[ "$(config "$BASHTARD_PLAYBOOK.node-ip" "")" != "" ]] - then - notice "$BASHTARD_PLAYBOOK" "Setting node ip in $(config "fs.etcdir")/default/kubelet" - cat <<-EOF > "$(config "fs.etcdir")/default/kubelet" - KUBELET_EXTRA_ARGS="--node-ip=$(config "$BASHTARD_PLAYBOOK.node-ip")" - EOF - fi - - notice "$BASHTARD_PLAYBOOK" "Initialize kubeadm" - kubeadm join \ - --discovery-token-ca-cert-hash "$(config "$BASHTARD_PLAYBOOK.cert-hash")" \ - --node-name="${BASHTARD_PLATFORM[fqdn]}" \ - --token "$(config "$BASHTARD_PLAYBOOK.token")" \ - "$(config "$BASHTARD_PLAYBOOK.master.address"):$(config "$BASHTARD_PLAYBOOK.master.port" "6443")" -} - -playbook_sync() { - :; -} - -playbook_del() { - kubectl drain "${BASHTARD_PLATFORM[fqdn]}" \ - --delete-emptydir-data \ - --force \ - --ignore-daemonsets - - kubeadm reset --force - iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X - ipvsadm -C - rm -fr -- \ - "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" \ - "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" \ - "$(config "fs.etcdir")/cni/net.d" \ - "$(config "fs.etcdir")/kubernetes" \ - "/var/lib/etcd" \ - "/var/lib/cni" - - pkg uninstall kubectl - pkg uninstall kubeadm - pkg uninstall kubelet - pkg uninstall containerd - - case "${BASHTARD_PLATFORM[key]}" in - linux-debian_gnu_linux) - # Fetch the apt key - info "$BASHTARD_PLAYBOOK" "Removing apt repository" - rm -fr -- \ - /etc/apt/keyrings/kubernetes-apt-keyring.gpg \ - /etc/apt/sources.list.d/kubernetes.list - ;; - esac -} diff --git a/playbooks.d/seaweedfs-volume/playbook.bash b/playbooks.d/seaweedfs-volume/playbook.bash index 8485ba0..875a2cd 100644 --- a/playbooks.d/seaweedfs-volume/playbook.bash +++ b/playbooks.d/seaweedfs-volume/playbook.bash @@ -69,13 +69,14 @@ playbook_sync() { file_template "volume.conf" \ dc="$(config "$BASHTARD_PLAYBOOK.dc")" \ dir="/var/lib/seaweedfs/volume/$volume" \ - disk="$(config "$BASHTARD_PLAYBOOK.volume.$volume.disk" "hdd")" \ - max="$(config "$BASHTARD_PLAYBOOK.volume.$volume.max" "0")" \ - free_space="$(config "$BASHTARD_PLAYBOOK.free-space" "10GiB")" \ + disk="$(config "$BASHTARD_PLAYBOOK.volumes.$volume.disk" "hdd")" \ filesize_limit="$(config "$BASHTARD_PLAYBOOK.filesize-limit" "256")" \ + free_space="$(config "$BASHTARD_PLAYBOOK.free-space" "10GiB")" \ ip="$(config "$BASHTARD_PLAYBOOK.ip")" \ + max="$(config "$BASHTARD_PLAYBOOK.volumes.$volume.max" "0")" \ mserver="$(join_args "${peers[@]}")" \ - port="$(config "$BASHTARD_PLAYBOOK.volume.$volume.port" "8080")" \ + port_grpc="$(config "$BASHTARD_PLAYBOOK.volumes.$volume.port.grpc" "17080")" \ + port_http="$(config "$BASHTARD_PLAYBOOK.volumes.$volume.port.http" "8080")" \ rack="$(config "$BASHTARD_PLAYBOOK.rack")" \ > "$buffer" diff --git a/playbooks.d/seaweedfs-volume/share/volume.conf b/playbooks.d/seaweedfs-volume/share/volume.conf index d659faa..e9310cb 100644 --- a/playbooks.d/seaweedfs-volume/share/volume.conf +++ b/playbooks.d/seaweedfs-volume/share/volume.conf @@ -1,5 +1,6 @@ ip=[${ip}] -port=${port} +port=${port_http} +port.grpc=${port_grpc} mserver=${mserver} dataCenter=${dc} diff --git a/playbooks.d/seaweedfs/playbook.bash b/playbooks.d/seaweedfs/playbook.bash index 7405cb5..e6c0c4c 100644 --- a/playbooks.d/seaweedfs/playbook.bash +++ b/playbooks.d/seaweedfs/playbook.bash @@ -9,7 +9,7 @@ playbook_add() { # Install seaweedfs case "${BASHTARD_PLATFORM[arch]}" in x86_64) dl_arch=amd64 ;; - *) die "NYI" ;; + aarch64) dl_arch=arm64 ;; esac dl_baseurl="https://github.com/seaweedfs/seaweedfs/releases/download" @@ -34,7 +34,8 @@ playbook_add() { } playbook_sync() { - :; + file_template "seaweedfs-mount@.service"\ + > "/etc/systemd/system/seaweedfs-mount@.service" } playbook_del() { diff --git a/playbooks.d/seaweedfs/share/master.conf b/playbooks.d/seaweedfs/share/master.conf deleted file mode 100644 index fb72a28..0000000 --- a/playbooks.d/seaweedfs/share/master.conf +++ /dev/null @@ -1,8 +0,0 @@ -ip=${ip} -port=${port} - -peers=${peers} -mdir=${mdir} - -defaultReplication=${replication} -volumeSizeLimitMB=${volume_size} diff --git a/playbooks.d/seaweedfs/share/seaweedfs-mount@.service b/playbooks.d/seaweedfs/share/seaweedfs-mount@.service new file mode 100644 index 0000000..438dc90 --- /dev/null +++ b/playbooks.d/seaweedfs/share/seaweedfs-mount@.service @@ -0,0 +1,15 @@ +[Unit] +Description=SeaweedFS Mount %i +After=network.target + +[Service] +Type=simple +User=root +Group=root + +ExecStart=/usr/bin/weed mount -options="/etc/seaweedfs/mount-%i.conf" +ExecStopPost=sh -c "/bin/umount $(awk -F= '/^dir=/ { print $NF }' < /etc/seaweedfs/mount-%i.conf)" +SyslogIdentifier=seaweedfs-mount-%i + +[Install] +WantedBy=multi-user.target diff --git a/playbooks.d/seaweedfs/share/server.conf b/playbooks.d/seaweedfs/share/server.conf deleted file mode 100644 index 12be6fa..0000000 --- a/playbooks.d/seaweedfs/share/server.conf +++ /dev/null @@ -1,14 +0,0 @@ -dir=${datadir} -ip=${ip} - -master=true -master.volumeSizeLimitMB=${volume_size} - -filer=true - -s3=true - -volume=true -volume.disk=hdd -volume.max=0 -volume.minFreeSpace=${reserved_space} diff --git a/playbooks.d/vpn-tinc/playbook.bash b/playbooks.d/vpn-tinc/playbook.bash index 6a6a957..485c6e6 100644 --- a/playbooks.d/vpn-tinc/playbook.bash +++ b/playbooks.d/vpn-tinc/playbook.bash @@ -17,15 +17,17 @@ playbook_add() local name local tinc local tincd + local port data="$(playbook_path "data")" - etc="$(config "fs.etcdir")/tinc/tyilnet" host="$(tr "." "_" <<< "${BASHTARD_PLATFORM[fqdn]}")" ipv4="$(config "$BASHTARD_PLAYBOOK.ipv4")" ipv6="$(config "$BASHTARD_PLAYBOOK.ipv6")" name="$(config "$BASHTARD_PLAYBOOK.name")" tinc="$(config "app.tinc")" tincd="$(config "app.tincd")" + port="$(config "$BASHTARD_PLAYBOOK.port" "655")" + etc="$(config "fs.etcdir")/tinc/$name" case "${BASHTARD_PLATFORM[key]}" in freebsd) iptool=ifconfig ;; @@ -41,10 +43,6 @@ playbook_add() "$etc" \ "$etc/hosts" - file_template tinc.conf \ - "name=$host" \ - > "$etc/tinc.conf" - file_template "tinc-up-$iptool" \ "ip4=$ipv4" \ "ip6=$ipv6" \ @@ -58,6 +56,7 @@ playbook_add() file_template "host" \ "ip4=$ipv4" \ "ip6=$ipv6" \ + "port=$port" \ > "$etc/hosts/$host" chmod +x \ @@ -139,6 +138,17 @@ playbook_sync() cp -v -- "$data/hosts/$file" "$etc/hosts/$file" done + info "$BASHTARD_PLAYBOOK/sync" "Reconfiguring peers" + { + printf "Name = %s\n\n" "$host" + + while read -r peer + do + printf "ConnectTo = %s\n" "$(config "$BASHTARD_PLAYBOOK.peers.$peer")" + done < <( config_subkeys "$BASHTARD_PLAYBOOK.peers" ) + } > "$etc/tinc.conf" + + [[ "$BASHTARD_COMMAND" == "add" ]] && return [[ "$hash" == "$(dir_hash "$etc/hosts")" ]] && return diff --git a/playbooks.d/vpn-tinc/share/host b/playbooks.d/vpn-tinc/share/host index 627aab6..fbcdd4a 100644 --- a/playbooks.d/vpn-tinc/share/host +++ b/playbooks.d/vpn-tinc/share/host @@ -1,3 +1,4 @@ +Port = ${port} + Subnet = ${ip4}/32 Subnet = ${ip6}/128 - |