This commit is contained in:
Kevin Veen-Birkenbach 2025-06-17 12:29:33 +02:00
parent fedaa02067
commit 4fbf8f505c
No known key found for this signature in database
GPG Key ID: 44D8F11FD62F878E
7 changed files with 118 additions and 8 deletions

View File

@ -1,6 +1,6 @@
- name: "Create (optional) '{{ docker_compose.files.dockerfile }}'"
template:
src: "{{ playbook_dir }}/roles/{{ role_name }}/templates/Dockerfile"
src: "{{ playbook_dir }}/roles/{{ role_name }}/templates/Dockerfile.j2"
dest: "{{ docker_compose.files.dockerfile }}"
notify: docker compose project build and setup
ignore_errors: false

View File

@ -0,0 +1,44 @@
# defaults/
This directory contains default variable definition files for the `docker-mariadb` Ansible role. It centralizes all configurable values related to MariaDB deployment and can be adjusted without modifying task logic.
---
## files and their purpose
### `main.yml`
Defines default values for how the MariaDB database should be created.
* **`database_encoding`** (string):
* **Default:** `"utf8mb4"`
* **Reasoning:**
* **Full Unicode support**: `utf8mb4` is the only MySQL/MariaDB character set that fully implements 4byte UTF8, allowing storage of emojis, supplementary symbols, and all global scripts without data loss.
* **Futureproof:** Modern applications and standards have converged on UTF8; using `utf8mb4` avoids migration challenges later.
* **Performance tradeoff:** While slightly more storage might be used compared to `latin1`, the universality of `utf8mb4` outweighs the cost for most deployments.
* **`database_collation`** (string):
* **Default:** `"utf8mb4_unicode_ci"`
* **Reasoning:**
* **Accurate sorting & comparison:** This collation uses full Unicode algorithm rules, ensuring linguistically correct comparisons across many languages.
* **Caseinsensitive (`ci`):** Most web apps expect caseinsensitive matching for usernames, emails, and search queries, improving usability.
* **Neutral choice:** Unlike languagespecific collations, `unicode_ci` works robustly in multilingual contexts without bias.
> **Tip:** If you have a legacy application requiring a different charset or collation (e.g., for backward compatibility with existing data), simply override `database_encoding` and `database_collation` in your playbook-level variables.
## Overriding default variables
To customize any of these values without editing role defaults:
1. Create or update a playbook-level vars file (e.g. `group_vars/all/docker-mariadb.yml`).
2. Set the desired values, for example:
```yaml
database_encoding: "latin1"
database_collation: "latin1_swedish_ci"
```
3. Run your playbook—Ansibles variable precedence ensures your overrides take effect.

View File

@ -0,0 +1,3 @@
# Check out the README.md file for more information, why this encodings and collations are used
database_encoding: "utf8mb4"
database_collation: "utf8mb4_unicode_ci"

View File

@ -53,12 +53,14 @@
- name: "Create database: {{ database_name }}"
mysql_db:
name: "{{ database_name }}"
state: present
login_user: root
name: "{{ database_name }}"
state: present
login_user: root
login_password: "{{ applications.mariadb.credentials.root_password }}"
login_host: 127.0.0.1
login_port: "{{database_port}}"
login_host: 127.0.0.1
login_port: "{{ database_port }}"
encoding: "{{ database_encoding }}"
collation: "{{ database_collation }}"
- name: "Create database user: {{ database_username }}"
mysql_user:

View File

@ -0,0 +1,34 @@
# vars/
This directory contains variable definition files for the `docker-mariadb` Ansible role. It centralizes all configurable values related to MariaDB deployment and can be adjusted without modifying task logic.
---
## files and their purpose
### 1. `configuration.yml`
Contains configuration values that determine which Docker image version to use and what hostname the container will be registered under.
* **`version`** (string):
* Default: `"latest"`
* The MariaDB image tag to pull (e.g. `10.6`, `10.11`, or `latest`).
* **`hostname`** (string):
* Default: `"central-mariadb"`
* The container name and DNS alias within the `central_mariadb` network. Used by other services (like Moodle) to connect.
> **Tip:** Pin to a specific minor version (e.g., `10.6.12`) in production to avoid breaking changes on rebuilds.
---
### 2. `main.yml`
Minimal file defining the application identifier for the role.
* **`application_id`** (string):
* Default: `"mariadb"`
* Logical name used in templates, notifications, or paths when multiple roles/services may coexist.

View File

@ -0,0 +1,28 @@
# Administration
# Radical Erase of Setup
To manually erase the full moodle setup inkluding all data execute:
**CLI:**
```bash
cd /opt/docker/moodle && \
docker compose down -v || {
echo "docker compose down failed, cleaning up manually"
rm -rv /mnt/hdd/data/docker/volumes/moodle_*
docker compose down -v
} && \
rm -rv /opt/docker/moodle
```
Afterwards login to the database and execute
**MariaDB:**
```sql
DROP DATABASE IF EXISTS moodle;
```
to delete all data in the database related to this role.
# Virgin Setup
After the installation you can rerun this role to create a fresh setup of Moodle.

View File

@ -1,3 +1,2 @@
# Todo
- Check if sendmail needs to be installed. See [Issue](https://github.com/bitnami/containers/issues/63311).
- Solve [issue](https://github.com/bitnami/containers/issues/72747)
- Check if sendmail needs to be installed. See [Issue](https://github.com/bitnami/containers/issues/63311).