mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-29 15:06:26 +02:00
Finished docker refactoring
This commit is contained in:
49
roles/docker-container/README.md
Normal file
49
roles/docker-container/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Role: docker-container
|
||||
|
||||
## Description
|
||||
|
||||
This Ansible role supplies common Jinja2 snippets for composing Docker services consistently. Rather than repeating the same YAML blocks, you include one or more of the provided templates in your `docker-compose.yml.j2`.
|
||||
|
||||
## Overview
|
||||
|
||||
The following templates are available under `roles/docker-container/templates/`:
|
||||
|
||||
- **base.yml.j2**
|
||||
Common service settings: `restart`, `env_file`, `logging`.
|
||||
|
||||
- **networks.yml.j2**
|
||||
Conditional network attachments:
|
||||
- `central_<database_type>` when `central_database` feature is enabled
|
||||
- `central_ldap` when LDAP feature and network are enabled
|
||||
- `default`
|
||||
|
||||
- **depends_on_dmbs.j2**
|
||||
Builds a `depends_on:` block automatically:
|
||||
- If `central_database` is **off**, renders an empty list `depends_on: []`
|
||||
- Otherwise, includes `database` and/or `redis` with healthcheck conditions
|
||||
|
||||
- **healthcheck/**
|
||||
Four strategies:
|
||||
- `curl.yml.j2` (HTTP via `curl -f`)
|
||||
- `wget.yml.j2` (HTTP via `wget --spider`)
|
||||
- `tcp.yml.j2` (TCP socket test)
|
||||
- `msmtp_curl.yml.j2` (SMTP first, then HTTP via `curl`; avoids duplicate emails)
|
||||
|
||||
Include whichever snippets your service requires to keep your Compose files DRY and maintainable.
|
||||
|
||||
## Features
|
||||
|
||||
- **Modular templates**
|
||||
Mix only the blocks you need.
|
||||
|
||||
- **Feature‐driven logic**
|
||||
Networks and dependencies adjust automatically based on your `applications` variables.
|
||||
|
||||
- **Multiple healthcheck options**
|
||||
Pick the probe that works best for your container’s protocol and requirements.
|
||||
|
||||
## Further Resources
|
||||
|
||||
- [Docker Compose file reference](https://docs.docker.com/compose/compose-file/)
|
||||
- [Ansible variable precedence](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#understanding-variable-precedence)
|
||||
- [Jinja2 templating guide](https://jinja.palletsprojects.com/)
|
10
roles/docker-container/templates/networks.yml.j2
Normal file
10
roles/docker-container/templates/networks.yml.j2
Normal file
@@ -0,0 +1,10 @@
|
||||
{# This template needs to be included in docker-compose.yml containers #}
|
||||
networks:
|
||||
{% if applications | is_feature_enabled('central_database',application_id) | bool and database_type is defined %}
|
||||
central_{{ database_type }}:
|
||||
{% endif %}
|
||||
{% if applications[application_id].get('features', {}).get('ldap', false) | bool and applications.ldap.network.docker|bool %}
|
||||
central_ldap:
|
||||
{% endif %}
|
||||
default:
|
||||
{{ "\n" }}
|
Reference in New Issue
Block a user