ansible-taler-exchange

Ansible playbook to deploy a production Taler Exchange
Log | Files | Refs | Submodules | README | LICENSE

commit 9a39805c3275ea2b52c02049447993f1e52da2a9
parent d116ced59bb86921e68f4e89d3b210abc3568712
Author: Florian Dold <florian@dold.me>
Date:   Tue, 17 Feb 2026 00:50:58 +0100

tweaks

Diffstat:
Mroles/challenger/tasks/pre-exchange.yml | 6++++++
Mroles/exchange/defaults/main.yml | 6++++--
Mroles/exchange/tasks/main.yml | 64++++++++++++++++++++++++++++++++++++----------------------------
3 files changed, 46 insertions(+), 30 deletions(-)

diff --git a/roles/challenger/tasks/pre-exchange.yml b/roles/challenger/tasks/pre-exchange.yml @@ -2,6 +2,12 @@ - name: Populate service facts service_facts: +- name: Ensure default challenger service is stopped + ansible.builtin.systemd: + name: challenger-httpd + state: stopped + enabled: false + - name: Ensure SMS challenger service is stopped before we upgrade ansible.builtin.systemd: name: sms-challenger diff --git a/roles/exchange/defaults/main.yml b/roles/exchange/defaults/main.yml @@ -1 +1,4 @@ -exchange_use_letsencrypt: true -\ No newline at end of file +exchange_use_letsencrypt: true +typst_version: "0.14.2" +typst_checksum: "sha256:a6044cbad2a954deb921167e257e120ac0a16b20339ec01121194ff9d394996d" +typst_download_url: "https://github.com/typst/typst/releases/download/v{{ typst_version }}/typst-x86_64-unknown-linux-musl.tar.xz" diff --git a/roles/exchange/tasks/main.yml b/roles/exchange/tasks/main.yml @@ -24,33 +24,44 @@ state: latest when: ansible_os_family == 'Debian' +- name: Install pdftk + ansible.builtin.apt: + name: + - pdftk + state: latest + when: ansible_os_family == 'Debian' -- name: Install PDF creation tools - vars: - typst_version: "0.14.2" - typst_checksum: "sha256:a6044cbad2a954deb921167e257e120ac0a16b20339ec01121194ff9d394996d" - typst_download_url: "https://github.com/typst/typst/releases/download/v{{ typst_version }}/typst-x86_64-unknown-linux-musl.tar.xz" +- name: Check if Typst binary exists + ansible.builtin.stat: + path: "{{ typst_bin_path | default('/usr/local/bin/typst') }}" + register: typst_stat + +- name: Get current Typst version + ansible.builtin.command: "{{ typst_bin_path | default('/usr/local/bin/typst') }} --version" + register: typst_version_check + changed_when: false + failed_when: false + when: typst_stat.stat.exists + +- name: Install or Update Typst + # Only runs if binary is missing OR the version string doesn't match our target + when: > + not typst_stat.stat.exists or + typst_version not in (typst_version_check.stdout | default('')) block: - - name: Install pdftk - ansible.builtin.apt: - name: - - pdftk - state: latest - when: ansible_os_family == 'Debian' - - name: Create temporary directory for extraction ansible.builtin.tempfile: state: directory suffix: typst_install register: temp_dir - - name: Download and verify Typst binary + - name: Download Typst release archive ansible.builtin.get_url: - url: "{{ typst_download_url }}" + url: "https://github.com/typst/typst/releases/download/v{{ typst_version }}/typst-x86_64-unknown-linux-musl.tar.xz" dest: "{{ temp_dir.path }}/typst.tar.xz" checksum: "{{ typst_checksum }}" - mode: "0644" + mode: '0644' - name: Unarchive Typst binary ansible.builtin.unarchive: @@ -58,29 +69,26 @@ dest: "{{ temp_dir.path }}" remote_src: true - - name: Install Typst to /usr/local/bin + - name: Copy binary to destination ansible.builtin.copy: - # The archive extracts into a folder named 'typst-x86_64-unknown-linux-musl' + # Note: The folder inside the tar.xz matches the release name src: "{{ temp_dir.path }}/typst-x86_64-unknown-linux-musl/typst" - dest: /usr/local/bin/typst - mode: "0755" + dest: "{{ typst_bin_path | default('/usr/local/bin/typst') }}" + mode: '0755' owner: root group: root remote_src: true - - name: Cleanup temporary files + - name: Cleanup temporary directory ansible.builtin.file: path: "{{ temp_dir.path }}" state: absent - - name: Verify installation - ansible.builtin.command: typst --version - register: typst_output - changed_when: false - - - name: Print Typst version - ansible.builtin.debug: - msg: "Typst installed: {{ typst_output.stdout }}" +- name: Verify Typst is functional + ansible.builtin.command: "{{ typst_bin_path | default('/usr/local/bin/typst') }} --version" + register: typst_final_check + changed_when: false + failed_when: "typst_version not in typst_final_check.stdout" - name: Ensure Taler exchange virtualhost configuration file exists ansible.builtin.template: