ansible-taler-exchange

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

commit f35b95c1bda06d8a72a19ed9df253f6461e1f131
parent dcd1e73e7863952f1ce9216c178b90a7b2b2ac9a
Author: Florian Dold <dold@taler.net>
Date:   Fri, 31 Jul 2026 15:44:51 +0200

generate the legal documents from a loop

Six near-identical stat/build pairs covered terms of service and privacy
policy in en, fr and de, each with the author string spelled out again.
Adding a language now means adding it to the role defaults.

Diffstat:
Aroles/exchange_tops/defaults/main.yml | 11+++++++++++
Mroles/exchange_tops/tasks/main.yml | 75++++++++++++++++++---------------------------------------------------------
2 files changed, 29 insertions(+), 57 deletions(-)

diff --git a/roles/exchange_tops/defaults/main.yml b/roles/exchange_tops/defaults/main.yml @@ -0,0 +1,11 @@ +--- +# Languages the terms of service and privacy policy are generated for. +# A document is only built if the corresponding .rst source ships with +# the taler-exchange package. +exchange_tops_terms_languages: + - en + - fr + - de + +# Author line printed on the generated documents. +exchange_tops_terms_author: "Taler Operations AG, Biel/Bienne" diff --git a/roles/exchange_tops/tasks/main.yml b/roles/exchange_tops/tasks/main.yml @@ -39,62 +39,23 @@ group: root mode: "0644" -- name: Check if we have terms of service in English +- name: Check which legal documents we have sources for stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.en.rst" - register: have_terms_en - -- name: Build terms of service (EN) - ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l en - when: have_terms_en.stat.exists - -- name: Check if we have privacy policy in English - stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.en.rst" - register: have_pp_en - -- name: Build privacy policy (EN) - ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l en - when: have_pp_en.stat.exists - -- name: Check if we have terms of service in French - stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.fr.rst" - register: have_terms_fr - -- name: Build terms of service (FR) - ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l fr - when: have_terms_fr.stat.exists - -- name: Check if we have privacy policy in French - stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.fr.rst" - register: have_pp_fr - -- name: Build privacy policy (FR) - ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l fr - when: have_pp_fr.stat.exists - -- name: Check if we have terms of service in German - stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.de.rst" - register: have_terms_de - -- name: Build terms of service (DE) - ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l de - when: have_terms_de.stat.exists - -- name: Check if we have privacy policy in German - stat: - path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.de.rst" - register: have_pp_de - -- name: Build privacy policy (DE) + path: "/usr/share/taler-exchange/terms/{{ item.0 }}.{{ item.1 }}.rst" + register: legal_sources + loop: "{{ [EXCHANGE_TERMS_ETAG, EXCHANGE_PP_ETAG] + | product(exchange_tops_terms_languages) | list }}" + loop_control: + label: "{{ item.0 }}.{{ item.1 }}" + +- name: Build legal documents ansible.builtin.command: - cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l de - when: have_pp_de.stat.exists + cmd: >- + taler-terms-generator + -a "{{ exchange_tops_terms_author }}" + -i {{ item.item.0 }} + -l {{ item.item.1 }} + when: item.stat.exists + loop: "{{ legal_sources.results }}" + loop_control: + label: "{{ item.item.0 }}.{{ item.item.1 }}"