✨ feat(infrastructure): introduce ansible deployment for taler services
- 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
This commit is contained in:
parent
ca89a06864
commit
fdc9234540
18 changed files with 525 additions and 0 deletions
66
roles/env_config/tasks/main.yml
Normal file
66
roles/env_config/tasks/main.yml
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
- 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 }}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue