- add ansible playbooks and roles for deploying taler exchange and merchant
- configure PostgreSQL, GNU Taler repositories, and services
🔧 chore(config): provide example env and gitignore for sensitive files
- create .env-example with placeholders for sensitive info
- add .gitignore entries for .env and common editor files
66 lines
2.5 KiB
YAML
66 lines
2.5 KiB
YAML
---
|
|
- name: Determine project root
|
|
set_fact:
|
|
project_root: "{{ (playbook_dir | realpath) | dirname }}"
|
|
|
|
- name: Set default .env path
|
|
set_fact:
|
|
env_file_resolved: "{{ lookup('ansible.builtin.env', 'GNUTALER_ENV_FILE') }}"
|
|
|
|
- name: Override .env path with project default when not provided
|
|
set_fact:
|
|
env_file_resolved: "{{ project_root + '/.env' }}"
|
|
when: env_file_resolved | default('') | length == 0
|
|
|
|
- name: Check if .env file exists
|
|
ansible.builtin.stat:
|
|
path: "{{ env_file_resolved }}"
|
|
register: env_file_stat
|
|
|
|
- name: Load .env overrides when present
|
|
set_fact:
|
|
env_overrides: "{{ lookup('community.general.read_env', env_file_resolved) }}"
|
|
when: env_file_stat.stat.exists
|
|
|
|
- name: Warn when .env file is missing
|
|
ansible.builtin.debug:
|
|
msg: >-
|
|
.env file not found at {{ env_file_resolved }}.
|
|
Using defaults from group_vars/all.yml. Create one from .env-example.
|
|
when: not env_file_stat.stat.exists
|
|
|
|
- name: Merge defaults with .env overrides
|
|
set_fact:
|
|
taler_env: "{{ taler_defaults | combine(env_overrides | default({}), recursive=True) }}"
|
|
|
|
- name: Build structured variables for play consumption
|
|
set_fact:
|
|
taler_config:
|
|
domain: "{{ taler_env.TALER_DOMAIN }}"
|
|
admin_email: "{{ taler_env.TALER_ADMIN_EMAIL }}"
|
|
acme_contact: "{{ taler_env.LETSENCRYPT_CONTACT }}"
|
|
package_repo: "{{ taler_env.TALER_PACKAGE_REPO }}"
|
|
distribution: "{{ taler_env.TALER_DISTRIBUTION }}"
|
|
currency: "{{ taler_env.TALER_CURRENCY }}"
|
|
exchange_host: "{{ taler_env.TALER_EXCHANGE_HOST }}"
|
|
merchant_host: "{{ taler_env.TALER_MERCHANT_HOST }}"
|
|
pay_host: "{{ taler_env.TALER_PAY_HOST }}"
|
|
wordpress_host: "{{ taler_env.WORDPRESS_HOST }}"
|
|
exchange_master_key: "{{ taler_env.TALER_MASTER_PUBLIC_KEY }}"
|
|
db:
|
|
host: "{{ taler_env.TALER_DB_HOST }}"
|
|
port: "{{ taler_env.TALER_DB_PORT | int }}"
|
|
admin_user: "{{ taler_env.TALER_DB_ADMIN_USER }}"
|
|
admin_password: "{{ taler_env.TALER_DB_ADMIN_PASSWORD }}"
|
|
exchange:
|
|
name: "{{ taler_env.TALER_EXCHANGE_DB }}"
|
|
user: "{{ taler_env.TALER_EXCHANGE_DB_USER }}"
|
|
password: "{{ taler_env.TALER_EXCHANGE_DB_PASSWORD }}"
|
|
merchant:
|
|
name: "{{ taler_env.TALER_MERCHANT_DB }}"
|
|
user: "{{ taler_env.TALER_MERCHANT_DB_USER }}"
|
|
password: "{{ taler_env.TALER_MERCHANT_DB_PASSWORD }}"
|
|
wordpress_db:
|
|
name: "{{ taler_env.WORDPRESS_DB_NAME }}"
|
|
user: "{{ taler_env.WORDPRESS_DB_USER }}"
|
|
password: "{{ taler_env.WORDPRESS_DB_PASSWORD }}"
|