Fix a templating crash during docker-compose.yml rendering when a role sets database_type to an empty string or does not expose it (e.g., svc-prx-openresty). Previously _database_id resolved to 'svc-db-' and get_app_conf attempted to read 'docker.services..name', raising AppConfigKeyError: Application ID 'svc-db-' not found. Changes: - Introduce _dbtype = (database_type | d('') | trim) and build _database_id only if _dbtype is non-empty. - Guard central DB lookups: use get_app_conf(..., strict=False, default='') and only when _dbtype is set. - Default _database_consumer_entity_name to get_entity_name of database_application_id or fallback to application_id. - Only resolve database_port when _dbtype is set; otherwise empty. - Minor formatting fixes for env and URL strings. Impact: - Prevents failures in roles without a DB or with database_type=''. - Keeps previous behavior intact for apps with a valid database_type (mariadb/postgres). - Eliminates 'config_path: docker.services..name' errors while keeping compose templates stable. https://chatgpt.com/share/689b9d11-6308-800f-b20c-2d9f18d832f1
Central Database
Description
This Ansible role provisions a centralized database system in your Docker Compose environment. It supports both MariaDB and PostgreSQL, providing a robust, scalable, and low-maintenance database solution. Whether you're consolidating your application's data or creating a dedicated central storage, this role simplifies setup and integration.
Overview
Tailored for environments that require a central data repository, this role:
- Loads necessary database variables defined in vars/database.yml.
- Generates an environment file based on the chosen database engine.
- Integrates seamlessly with Docker Compose to deploy a centralized database container (if enabled).
Purpose
The role's purpose is to automate the provisioning and configuration of a centralized database service. This not only reduces manual setup but also ensures consistent, reliable deployment across production and homelab environments.
Features
- Supports Multiple Engines: Easily switch between MariaDB and PostgreSQL.
- Centralized Data Management: Improves data consistency and security.
- Docker Compose Integration: Automates container setup and configuration.
- Simplified Variable Management: Preconfigured templates minimize manual intervention.
Credits 📝
Developed and maintained by Kevin Veen-Birkenbach.
Learn more at www.veen.world
Part of the Infinito.Nexus Project
License: Infinito.Nexus NonCommercial License (CNCL)