- 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 }}"
 |