diff options
| author | Joe Carstairs <me@joeac.net> | 2026-08-12 17:20:08 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-08-12 17:20:08 +0100 |
| commit | 4f8d16ebcb16811d6a7a95d659be7e138d2713ef (patch) | |
| tree | 491b2e0980cbc2ce61bbdaf62df8acb83313fecf /ansible/roles | |
| parent | 96877bf48ae0920a3439dc3f7866638df4cc633c (diff) | |
ansible installs gemini capsule
Diffstat (limited to 'ansible/roles')
| -rw-r--r-- | ansible/roles/agate/tasks/main.yml | 8 | ||||
| -rw-r--r-- | ansible/roles/comitium/tasks/main.yml | 22 | ||||
| -rw-r--r-- | ansible/roles/gemini/tasks/main.yml | 44 | ||||
| -rw-r--r-- | ansible/roles/gemini/templates/openrc/gemini | 30 |
4 files changed, 104 insertions, 0 deletions
diff --git a/ansible/roles/agate/tasks/main.yml b/ansible/roles/agate/tasks/main.yml new file mode 100644 index 0000000..6fe7367 --- /dev/null +++ b/ansible/roles/agate/tasks/main.yml @@ -0,0 +1,8 @@ +- name: Install cargo + community.general.apk: + name: cargo + +- name: Install agate with cargo + ansible.builtin.command: + cmd: cargo install agate + creates: /root/.cargo/bin/agate diff --git a/ansible/roles/comitium/tasks/main.yml b/ansible/roles/comitium/tasks/main.yml new file mode 100644 index 0000000..da82c6d --- /dev/null +++ b/ansible/roles/comitium/tasks/main.yml @@ -0,0 +1,22 @@ +- name: Install go, make and scdoc + community.general.apk: + name: + - go + - make + - scdoc + +- name: Fetch comitium source code + ansible.builtin.git: + repo: https://git.sr.ht/~nytpu/comitium + dest: "{{ src_dir }}/comitium" + version: v{{ comitium_version }} + depth: 1 + +- name: Make + community.general.make: + chdir: "{{ src_dir }}/comitium" + +- name: Make install + community.general.make: + chdir: "{{ src_dir }}/comitium" + target: install diff --git a/ansible/roles/gemini/tasks/main.yml b/ansible/roles/gemini/tasks/main.yml new file mode 100644 index 0000000..73d730e --- /dev/null +++ b/ansible/roles/gemini/tasks/main.yml @@ -0,0 +1,44 @@ +- name: Checkout joeac.net source code + ansible.builtin.git: + repo: https://git.joeac.net/joeac/joeac.net.git + dest: "{{ src_dir }}/joeac.net" + depth: 1 + version: main + +- name: Run initial comitium refresh + register: comitium_refresh + ansible.builtin.command: + cmd: /usr/local/bin/comitium refresh --data {{ src_dir }}/joeac.net/gemini/comitium-data + creates: "{{ src_dir }}/joeac.net/gemini/comitium-data/feed.gmi" + +- name: Schedule daily comitium refresh + ansible.builtin.cron: + special_time: daily + job: /usr/local/bin/comitium refresh --data {{ src_dir }}/joeac.net/gemini/comitium-data + name: daily comitium refresh for joeac.net capsule + +- name: Build joeac.net capsule + register: build_capsule + community.general.make: + chdir: "{{ src_dir }}/joeac.net/gemini" + +- name: Install gemini service + register: install_service + ansible.builtin.template: + src: openrc/gemini + dest: /etc/init.d/gemini + mode: "775" + +- name: Start gemini service and configure to start on boot + when: not ( comitium_refresh is changed or build_capsule is changed or install_service is changed ) + ansible.builtin.service: + name: gemini + enabled: true + state: started + +- name: Restart gemini service and configure to start on boot + when: comitium_refresh is changed or build_capsule is changed or install_service is changed + ansible.builtin.service: + name: gemini + enabled: true + state: restarted diff --git a/ansible/roles/gemini/templates/openrc/gemini b/ansible/roles/gemini/templates/openrc/gemini new file mode 100644 index 0000000..fbc2cc8 --- /dev/null +++ b/ansible/roles/gemini/templates/openrc/gemini @@ -0,0 +1,30 @@ +#!/sbin/openrc-run + +description="agate gemini server (serving {{ src_dir }}/joeac.net/gemini/content)" + +start() +{ + ebegin "Starting agate (serving {{ src_dir }}/joeac.net/gemini/content)" + start-stop-daemon --start \ + --exec /root/.cargo/bin/agate \ + --background \ + --stdout /var/log/agate.log \ + --stderr /var/log/agate.log \ + --make-pidfile \ + --pidfile /run/agate.pid \ + -- \ + --content {{ src_dir }}/joeac.net/gemini/content/ \ + --addr 0.0.0.0:1965 \ + --addr [::]:1965 \ + --lang en-GB + eend $? +} + +stop() +{ + ebegin "Stopping agate" + start-stop-daemon --stop \ + --exec /usr/bin/pnpx \ + --pidfile /run/agate.pid + eend $? +} |
