Add MariaDB support

This commit is contained in:
Slavi Pantaleev 2023-04-10 13:44:48 +03:00
parent 73c4822188
commit 56ea8bc5ae
5 changed files with 90 additions and 0 deletions

54
docs/services/mariadb.md Normal file
View file

@ -0,0 +1,54 @@
# MariaDB
[MariaDB](https://mariadb.org/) is a powerful, open source object-relational database system.
Some of the services installed by this playbook require a MariaDB database.
Enabling the MariaDB database service will automatically wire all other services which require such a database to use it.
## Configuration
To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process:
```yaml
########################################################################
# #
# mariadb #
# #
########################################################################
mariadb_enabled: true
# Put a strong password below, generated with `pwgen -s 64 1` or in another way
mariadb_root_passsword: ''
########################################################################
# #
# /mariadb #
# #
########################################################################
```
### Getting a database terminal
You can use the `/mash/mariadb/bin/cli` tool to get interactive terminal access to the MariaDB server.
To see the available databases, run `SHOW DATABASES`.
To change to another existing database (for example `miniflux`), run `USE miniflux`.
You can then proceed to write queries. Example: `SELECT COUNT(*) FROM users;`
**Be careful**. Modifying the database directly (especially as services are running) is dangerous and may lead to irreversible database corruption.
When in doubt, consider [making a backup](#backing-up-mariadb).
## Upgrading MariaDB
The major MariaDB version you start with (e.g. `10.10` or `10.11`) will be kept until you manually upgrade it. The playbook will stick to this major version and only do minor version upgrades (e.g. `10.10.1` -> `10.10.3`).
For now, there's no automatic upgrade path between major MariaDB versions, but support for upgrading will be added in the future.
## Backing up MariaDB
A `/mash/mariadb/bin/dump-all` script will be installed, which can dump the database to a path of your choosing.

View file

@ -18,6 +18,7 @@
| [Hubsite](https://github.com/moan0s/hubsite) | A simple, static site that shows an overview of the available services | [Link](services/hubsite.md) |
| [Jitsi](https://jitsi.org/) | A fully encrypted, 100% Open Source video conferencing solution | [Link](services/jitsi.md) |
| [Keycloak](https://www.keycloak.org/) | An open source identity and access management solution. | [Link](services/keycloak.md) |
| [MariaDB](https://mariadb.org/) | A powerful, open source object-relational database system | [Link](services/mariadb.md) |
| [Miniflux](https://miniflux.app/) | Minimalist and opinionated feed reader. | [Link](services/miniflux.md) |
| [Navidrome](https://www.navidrome.org/) | [Subsonic-API](http://www.subsonic.org/pages/api.jsp) compatible music server | [Link](services/navidrome.md)
| [NetBox](https://docs.netbox.dev/en/stable/) | Web application that provides [IP address management (IPAM)](https://en.wikipedia.org/wiki/IP_address_management) and [data center infrastructure management (DCIM)](https://en.wikipedia.org/wiki/Data_center_management#Data_center_infrastructure_management) functionality | [Link](services/netbox.md) |

View file

@ -121,6 +121,8 @@ devture_systemd_service_manager_services_list_auto: |
+
([{'name': (nextcloud_identifier + '-cron.timer'), 'priority': 2500, 'groups': ['mash', 'nextcloud', 'nextcloud-cron']}] if nextcloud_enabled else [])
+
([{'name': (mariadb_identifier + '.service'), 'priority': 500, 'groups': ['mash', 'mariadb']}] if mariadb_enabled else [])
+
([{'name': (owncast_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'owncast']}] if owncast_enabled else [])
+
([{'name': (peertube_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'peertube']}] if peertube_enabled else [])
@ -1292,6 +1294,34 @@ netbox_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) |
########################################################################
# #
# mariadb #
# #
########################################################################
mariadb_enabled: false
mariadb_identifier: "{{ mash_playbook_service_identifier_prefix }}mariadb"
mariadb_base_path: "{{ mash_playbook_base_path }}/{{ mash_playbook_service_base_directory_name_prefix }}mariadb"
mariadb_uid: "{{ mash_playbook_uid }}"
mariadb_gid: "{{ mash_playbook_gid }}"
# This will be extended in the future, to auto-create datases for services
# which depend on MariaDB.
# See `devture_postgres_managed_databases_auto`
mariadb_managed_databases_auto: []
########################################################################
# #
# /mariadb #
# #
########################################################################
########################################################################
# #
# owncast #

View file

@ -84,6 +84,9 @@
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-nextcloud.git
version: v26.0.0-4
name: nextcloud
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-mariadb.git
version: v10.11.2-0
name: mariadb
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-owncast.git
version: v0.0.13-0
name: owncast

View file

@ -74,6 +74,8 @@
- role: galaxy/grafana
- role: galaxy/mariadb
- role: galaxy/miniflux
- role: galaxy/hubsite