summaryrefslogtreecommitdiff
path: root/playbooks.d
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2023-05-15 15:54:41 +0200
committerPatrick Spek <p.spek@tyil.nl>2023-05-15 15:54:41 +0200
commit24ff97c6ee0a68fc208975b73fa5fa6dcf9c12ac (patch)
treed313b4c806f6ba2a6e037969772e4786a0d47539 /playbooks.d
parent2af88efe1971d6b0ac57543aaa6dd044d5941356 (diff)
Add playbook to configure seaweedfs
Diffstat (limited to 'playbooks.d')
-rw-r--r--playbooks.d/seaweedfs/description.txt1
-rw-r--r--playbooks.d/seaweedfs/etc/defaults1
-rw-r--r--playbooks.d/seaweedfs/playbook.bash101
-rw-r--r--playbooks.d/seaweedfs/share/server.conf14
4 files changed, 117 insertions, 0 deletions
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}