From 6bb3da532370cc683626dbeaebbe558d09517820 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sat, 16 May 2026 23:42:59 +0300 Subject: Add taulubot jail --- roles/host/tasks/main.yml | 1 + .../templates/usr_local_etc_rc.d_thelounge | 2 +- roles/jails/04_taulubot/defaults/main.yml | 9 ++++ roles/jails/04_taulubot/handlers/main.yml | 4 ++ roles/jails/04_taulubot/tasks/main.yml | 51 ++++++++++++++++++++++ .../templates/usr_local_etc_rc.d_taulubot | 44 +++++++++++++++++++ 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 roles/jails/04_taulubot/handlers/main.yml create mode 100644 roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot diff --git a/roles/host/tasks/main.yml b/roles/host/tasks/main.yml index 4323bc5..7f2567c 100644 --- a/roles/host/tasks/main.yml +++ b/roles/host/tasks/main.yml @@ -151,6 +151,7 @@ - { name: "zroot/jails/volumes/goaccess_www", mountpoint: "/usr/local/jails/volumes/goaccess_www" } - { name: "zroot/jails/volumes/postgres_data", mountpoint: "/usr/local/jails/containers/postgres/var/db/postgres" } - { name: "zroot/jails/volumes/irc_thelounge", mountpoint: "/usr/local/jails/containers/irc_thelounge/var/db/thelounge" } + - { name: "zroot/jails/volumes/taulubot", mountpoint: "/usr/local/jails/containers/taulubot/usr/local/taulubot/photos" } - { name: "zroot/jails/volumes/komga_data", mountpoint: "/usr/local/jails/containers/komga/root/.komga" } - { name: "zroot/storage", mountpoint: "/usr/local/jails/volumes/storage" } loop_control: diff --git a/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge b/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge index b01d1ed..16afd5d 100644 --- a/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge +++ b/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge @@ -19,7 +19,7 @@ status_cmd="${name}_status" thelounge_start() { echo "Starting ${name}..." - env ${thelounge_env} daemon -p ${pidfile} /usr/local/bin/thelounge start + env ${thelounge_env} daemon -p ${pidfile} -o /var/log/thelounge.log /usr/local/bin/thelounge start } thelounge_stop() diff --git a/roles/jails/04_taulubot/defaults/main.yml b/roles/jails/04_taulubot/defaults/main.yml index 697ea79..5b5cac6 100644 --- a/roles/jails/04_taulubot/defaults/main.yml +++ b/roles/jails/04_taulubot/defaults/main.yml @@ -1 +1,10 @@ userland: "14.3-RELEASE" + +pkg: + - python311 + - py311-pip + - git + - jpeg-turbo + +services: + - taulubot diff --git a/roles/jails/04_taulubot/handlers/main.yml b/roles/jails/04_taulubot/handlers/main.yml new file mode 100644 index 0000000..3c87c32 --- /dev/null +++ b/roles/jails/04_taulubot/handlers/main.yml @@ -0,0 +1,4 @@ +- name: Restart taulubot + service: + name: taulubot + state: restarted diff --git a/roles/jails/04_taulubot/tasks/main.yml b/roles/jails/04_taulubot/tasks/main.yml index 2abdaff..4054161 100644 --- a/roles/jails/04_taulubot/tasks/main.yml +++ b/roles/jails/04_taulubot/tasks/main.yml @@ -1,2 +1,53 @@ - import_role: name: jail + tasks_from: jail_setup + +- name: Create .ssh directory + file: + path: /root/.ssh + state: directory + owner: root + group: wheel + mode: "0700" + +- name: Deploy SSH key for git + copy: + content: "{{ taulubot_deploy_key.private }}" + dest: /root/.ssh/deploy_key + owner: root + group: wheel + mode: "0600" + no_log: true + +- name: Clone taulubot + shell: | + GIT_SSH_COMMAND="ssh -i /root/.ssh/deploy_key -o StrictHostKeyChecking=no" git clone git@github.com:jantuomi/taulubot.git /tmp/taulubot + cp -a /tmp/taulubot/* /tmp/taulubot/.git /tmp/taulubot/.gitignore /usr/local/taulubot/ 2>/dev/null || true + rm -rf /tmp/taulubot + args: + creates: /usr/local/taulubot/.git + +- name: Install Python dependencies + shell: pip install -r /usr/local/taulubot/requirements.txt + args: + creates: /usr/local/taulubot/.deps_installed + register: _pip_install + +- name: Mark dependencies installed + file: + path: /usr/local/taulubot/.deps_installed + state: touch + when: _pip_install is changed + +- name: Deploy rc.d script + template: + src: "{{ jail_role_dir }}/templates/usr_local_etc_rc.d_taulubot" + dest: /usr/local/etc/rc.d/taulubot + owner: root + group: wheel + mode: "0755" + notify: Restart taulubot + +- import_role: + name: jail + tasks_from: jail_launch diff --git a/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot b/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot new file mode 100644 index 0000000..8d5fed1 --- /dev/null +++ b/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot @@ -0,0 +1,44 @@ +#!/bin/sh + +# PROVIDE: taulubot +# REQUIRE: NETWORKING +# KEYWORD: shutdown + +. /etc/rc.subr + +name="taulubot" +rcvar="taulubot_enable" +pidfile="/var/run/${name}.pid" + +start_cmd="${name}_start" +stop_cmd="${name}_stop" +status_cmd="${name}_status" + +taulubot_start() +{ + echo "Starting ${name}..." + cd /usr/local/taulubot + daemon -p ${pidfile} -o /var/log/taulubot.log env BOT_TOKEN="{{ taulubot_token }}" /usr/local/bin/python3.11 taulubot.py +} + +taulubot_stop() +{ + if [ -f ${pidfile} ]; then + echo "Stopping ${name}..." + kill $(cat ${pidfile}) 2>/dev/null + rm -f ${pidfile} + fi +} + +taulubot_status() +{ + if [ -f ${pidfile} ] && kill -0 $(cat ${pidfile}) 2>/dev/null; then + echo "${name} is running as pid $(cat ${pidfile})" + else + echo "${name} is not running" + return 1 + fi +} + +load_rc_config $name +run_rc_command "$1" -- cgit v1.3