diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2026-05-13 00:13:57 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2026-05-16 18:42:27 +0300 |
| commit | b5860daf11ac353049cb1654b9414a129e5cfb96 (patch) | |
| tree | 87ed89711e4f0e85ace0a97fa123199152c67302 /roles/jails/08_diddle | |
| parent | 4715a28fdcd87440400d17154bfa361d99db29cc (diff) | |
Rework
Diffstat (limited to 'roles/jails/08_diddle')
| -rw-r--r-- | roles/jails/08_diddle/defaults/main.yml | 23 | ||||
| -rw-r--r-- | roles/jails/08_diddle/tasks/main.yml | 2 | ||||
| -rw-r--r-- | roles/jails/08_diddle/templates/root_clone.sh | 21 | ||||
| -rw-r--r-- | roles/jails/08_diddle/templates/root_diddle_env.j2 | 9 | ||||
| -rw-r--r-- | roles/jails/08_diddle/templates/usr_local_bin_diddle | 17 | ||||
| -rw-r--r-- | roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle | 43 |
6 files changed, 115 insertions, 0 deletions
diff --git a/roles/jails/08_diddle/defaults/main.yml b/roles/jails/08_diddle/defaults/main.yml new file mode 100644 index 0000000..9423bd6 --- /dev/null +++ b/roles/jails/08_diddle/defaults/main.yml @@ -0,0 +1,23 @@ +userland: "14.3-RELEASE" + +pkg: + - python311 + - py311-sqlite3 + - git + +files: + - src: root_clone.sh + dest: /root/clone.sh + mode: "0755" + - src: root_diddle_env.j2 + dest: /root/diddle/.env + mode: "0600" + - src: usr_local_bin_diddle + dest: /usr/local/bin/diddle + mode: "0755" + - src: usr_local_etc_rc.d_diddle + dest: /usr/local/etc/rc.d/diddle + mode: "0755" + +services: + - diddle diff --git a/roles/jails/08_diddle/tasks/main.yml b/roles/jails/08_diddle/tasks/main.yml new file mode 100644 index 0000000..2abdaff --- /dev/null +++ b/roles/jails/08_diddle/tasks/main.yml @@ -0,0 +1,2 @@ +- import_role: + name: jail diff --git a/roles/jails/08_diddle/templates/root_clone.sh b/roles/jails/08_diddle/templates/root_clone.sh new file mode 100644 index 0000000..7f92c5f --- /dev/null +++ b/roles/jails/08_diddle/templates/root_clone.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +REPO="$1" +TARGET="$2" + +set -eux + +# Exits with 100 if the directory was changed + +if [ ! -d "$TARGET" ]; then + git clone --depth=1 --branch main --single-branch "$REPO" "$TARGET" + exit 100 +fi + +cd "$TARGET" +before=$(git rev-parse HEAD) +git fetch --depth=1 --prune origin main +git reset --hard origin/main +after=$(git rev-parse HEAD) + +if [ "$before" != "$after" ]; then exit 100; fi diff --git a/roles/jails/08_diddle/templates/root_diddle_env.j2 b/roles/jails/08_diddle/templates/root_diddle_env.j2 new file mode 100644 index 0000000..ca7db78 --- /dev/null +++ b/roles/jails/08_diddle/templates/root_diddle_env.j2 @@ -0,0 +1,9 @@ +PYTHONUNBUFFERED="1" +BASE_URL="https://diddle.jan.systems" +DB_PATH="db.sqlite3" +EMAIL_HOST="smtp.postmarkapp.com" +EMAIL_PORT="587" +EMAIL_HOST_USER="{{ diddle_email_host_user }}" +EMAIL_HOST_PASSWORD="{{ diddle_email_host_password }}" +EMAIL_USE_TLS="true" +EMAIL_MESSAGE_FROM="diddle@jan.systems" diff --git a/roles/jails/08_diddle/templates/usr_local_bin_diddle b/roles/jails/08_diddle/templates/usr_local_bin_diddle new file mode 100644 index 0000000..d07cd5e --- /dev/null +++ b/roles/jails/08_diddle/templates/usr_local_bin_diddle @@ -0,0 +1,17 @@ +#!/bin/sh + +set -eux + +PATH=$PATH:/usr/local/bin + +cd /root/diddle + +if [ ! -f venv ]; then + python3.11 -m venv venv +fi + +PATH=$PATH:/root/diddle/venv/bin + +pip install -r requirements.txt +python apply_migrations.py +gunicorn --bind "0.0.0.0:80" -w 4 app:app diff --git a/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle b/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle new file mode 100644 index 0000000..01deaad --- /dev/null +++ b/roles/jails/08_diddle/templates/usr_local_etc_rc.d_diddle @@ -0,0 +1,43 @@ +#!/bin/sh +# +# PROVIDE: diddle +# REQUIRE: NETWORKING +# KEYWORD: shutdown +# +# Enable in /etc/rc.conf: +# diddle_enable="YES" +# +. /etc/rc.subr + +name="diddle" +rcvar=diddle_enable + +load_rc_config $name + +: ${diddle_command:=/usr/local/bin/diddle} +: ${diddle_log:=/var/log/${name}.log} + +start_cmd="${name}_start" +stop_cmd="${name}_stop" +status_cmd="${name}_status" + +extra_commands="status" + +diddle_start() { + /usr/local/bin/logto ${diddle_log} ${diddle_command} & +} + +diddle_status() { + if ps aux | grep diddle | grep -v grep | grep -v rc.d/diddle; then + echo "diddle is running" + else + echo "diddle is not running" + exit 1 + fi +} + +diddle_stop() { + ps aux | grep diddle | grep -v grep | grep -v rc.d/diddle | awk '{print $2}' | xargs kill -TERM +} + +run_rc_command "$1" |
