From 24ff97c6ee0a68fc208975b73fa5fa6dcf9c12ac Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Mon, 15 May 2023 15:54:41 +0200 Subject: Add playbook to configure seaweedfs --- playbooks.d/seaweedfs/description.txt | 1 + playbooks.d/seaweedfs/etc/defaults | 1 + playbooks.d/seaweedfs/playbook.bash | 101 ++++++++++++++++++++++++++++++++ playbooks.d/seaweedfs/share/server.conf | 14 +++++ 4 files changed, 117 insertions(+) create mode 100644 playbooks.d/seaweedfs/description.txt create mode 100644 playbooks.d/seaweedfs/etc/defaults create mode 100644 playbooks.d/seaweedfs/playbook.bash create mode 100644 playbooks.d/seaweedfs/share/server.conf diff --git a/playbooks.d/seaweedfs/description.txt b/playbooks.d/seaweedfs/description.txt new file mode 100644 index 0000000..d14afca --- /dev/null +++ b/playbooks.d/seaweedfs/description.txt @@ -0,0 +1 @@ +Scalable object storage cluster diff --git a/playbooks.d/seaweedfs/etc/defaults b/playbooks.d/seaweedfs/etc/defaults new file mode 100644 index 0000000..ac67585 --- /dev/null +++ b/playbooks.d/seaweedfs/etc/defaults @@ -0,0 +1 @@ +svc.seaweedfs=seaweedfs diff --git a/playbooks.d/seaweedfs/playbook.bash b/playbooks.d/seaweedfs/playbook.bash new file mode 100644 index 0000000..3eadac6 --- /dev/null +++ b/playbooks.d/seaweedfs/playbook.bash @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +playbook_add() { + local dl_arch + local dl_baseurl + local dl_binary + local dl_version + local buffer + + # Install seaweedfs + case "${BASHTARD_PLATFORM[arch]}" in + x86_64) dl_arch=amd64 ;; + *) die "NYI" ;; + esac + + dl_baseurl="https://github.com/seaweedfs/seaweedfs/releases/download" + dl_binary="$(printf "%s_%s.tar.gz" "${BASHTARD_PLATFORM[os]}" "$dl_arch")" + dl_version="3.50" + + buffer="$(tmpdir)" + + chgdir "$buffer" + + info "$BASHTARD_PLAYBOOK/add" "Fetching $dl_baseurl/$dl_version/$dl_binary" + curl -L "$dl_baseurl/$dl_version/$dl_binary" \ + > "$dl_binary" + + tar xzf "$dl_binary" + mv -v -- "weed" "$(config "fs.bindir")/weed" + + # Create mount.weed symlink + ln -fsv "$(config "fs.bindir")/weed" "$(config "fs.bindir")/mount.weed" + + # Generate systemd unit file + case "${BASHTARD_PLATFORM[init]}" in + systemd) + cat <<-EOF > "$(config "fs.etcdir")/systemd/system/seaweedfs.service" + [Unit] + Description=SeaweedFS + After=network.target + + [Service] + Type=simple + User=root + Group=root + + ExecStart=$(config "fs.bindir")/weed server -options="$(config "fs.etcdir")/seaweedfs/server.conf" + WorkingDirectory=/var/lib/seaweedfs + SyslogIdentifier=seaweedfs + + [Install] + WantedBy=multi-user.target + EOF + + systemctl daemon-reload + ;; + *) die "NYI" + esac + + # Create directories + mkdir -pv -- "/var/lib/seaweedfs" + mkdir -pv -- "$(config "fs.etcdir")/seaweedfs" + + # Perform initial configuration + playbook_sync + + # Start the service + svc enable seaweedfs + svc start seaweedfs +} + +playbook_sync() { + # Generate config file + file_template "server.conf" \ + "datadir=/var/lib/seaweedfs" \ + "ip=$(config "vpn-tinc.ipv4")" \ + "volume_size=1024" \ + "reserved_space=10GiB" \ + > "$(config "fs.etcdir")/seaweedfs/server.conf" + + [[ "$BASHTARD_ACTION" == "add" ]] && return + + # Reload service + svc restart seaweedfs +} + +playbook_del() { + # Stop service + svc stop seaweedfs + svc disable seaweedfs + + # Remove systemd unit file + rm -fr -- "$(config "fs.etcdir")/systemd/system/seaweedfs.service" + + # Remove configuration files + rm -fr -- "$(config "fs.etcdir")/seaweedfs" + + # Remove downloaded binary and symlinks + rm -fr -- "$(config "fs.bindir")/weed" + rm -fr -- "$(config "fs.bindir")/mount.weed" +} diff --git a/playbooks.d/seaweedfs/share/server.conf b/playbooks.d/seaweedfs/share/server.conf new file mode 100644 index 0000000..12be6fa --- /dev/null +++ b/playbooks.d/seaweedfs/share/server.conf @@ -0,0 +1,14 @@ +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} -- cgit v1.1