ansible-taler-exchange

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

commit 4f133f3a273daa863c3f638a99ad2851e4734bde
parent 20099ef394c2d2da2b5dd141e78bcea12f2495b0
Author: Florian Dold <dold@taler.net>
Date:   Sat,  5 Sep 2026 20:12:49 +0200

Readiness: allow time for initial denomination key generation

Give HTTP readiness checks a separate retry budget so cold exchange
startup can finish generating keys without extending failed-unit checks.

Diffstat:
MREADME | 3+++
Mroles/post_deployment_checks/defaults/main.yml | 3+++
Mroles/post_deployment_checks/tasks/main.yml | 2+-
3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/README b/README @@ -341,6 +341,9 @@ service actions and delegates other actions to the existing administrator policy (or permits them if none existed). Application package tasks use policy_rc_d: 101. The original policy is restored even on failure. PostgreSQL and nginx are started as needed during provisioning. +Cold exchange startup may spend several minutes generating denomination keys. +post_deployment_http_retries defaults to 60 (with a five-second request timeout +and one-second retry delay); systemd unit checks retain their shorter retry limit. A failed deployment leaves applications stopped without removing their boot enablement. Inspect the failed task, correct the problem, then rerun deploy.sh. diff --git a/roles/post_deployment_checks/defaults/main.yml b/roles/post_deployment_checks/defaults/main.yml @@ -2,6 +2,9 @@ post_deployment_check_retries: 10 post_deployment_check_delay: 1 post_deployment_http_timeout: 5 +# Cold exchange startup generates a year of RSA keys before serving requests. +# Allow up to roughly six minutes without extending failed-unit checks. +post_deployment_http_retries: 60 post_deployment_systemd_checks: # Exchange diff --git a/roles/post_deployment_checks/tasks/main.yml b/roles/post_deployment_checks/tasks/main.yml @@ -35,7 +35,7 @@ changed_when: false check_mode: false failed_when: false - retries: "{{ post_deployment_check_retries }}" + retries: "{{ post_deployment_http_retries }}" delay: "{{ post_deployment_check_delay }}" until: post_deployment_http_check.status | default(-1) == 200 when: item.enabled | bool