aboutsummaryrefslogtreecommitdiffstats
path: root/community/garage/garage.initd
diff options
context:
space:
mode:
Diffstat (limited to 'community/garage/garage.initd')
-rw-r--r--community/garage/garage.initd46
1 files changed, 46 insertions, 0 deletions
diff --git a/community/garage/garage.initd b/community/garage/garage.initd
new file mode 100644
index 00000000000..3f6341662c5
--- /dev/null
+++ b/community/garage/garage.initd
@@ -0,0 +1,46 @@
+#!/sbin/openrc-run
+
+name="Garage"
+description="Lightweight S3-compatible distributed object store"
+
+: ${cfgfile:="/etc/$RC_SVCNAME.toml"}
+: ${log_syslog="yes"}
+: ${log_level="warn"}
+: ${command_user:="garage"}
+
+command="/usr/bin/garage"
+command_args="-c $cfgfile server"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+
+required_files="$cfgfile"
+
+_rpc_secret_placeholder='rpc_secret = "change-me"'
+
+depend() {
+ need localmount net
+ after firewall
+}
+
+start_pre() {
+ export RUST_LOG=${RUST_LOG:-"netapp=$log_level,garage=$log_level"}
+
+ # NOTE: Logging to syslog is not supported by upstream (yet), this is
+ # done by Alpine's patch for now.
+ yesno "$log_syslog" && export GARAGE_SYSLOG=1
+
+ if ! [ -f "$cfgfile.apk-new" ] && grep -qFx "$_rpc_secret_placeholder" "$cfgfile"; then
+ if [ -w "$cfgfile" ]; then
+ einfo "Replacing rpc_secret in $cfgfile with a random string..."
+
+ local pass=$(head /dev/urandom | tr -dc a-f0-9 | head -c 64)
+ sed -i "s/^$_rpc_secret_placeholder/rpc_secret = \"$pass\"/" "$cfgfile"
+ else
+ ewarn "Change rpc_secret in $cfgfile to a random password!"
+ fi
+ fi
+ if [ "${error_log:-}" ]; then
+ checkpath -f -m 640 -o "$command_user" "$error_log" || return 1
+ fi
+}