diff --git a/roles/service/meta/argument_specs.yaml b/roles/service/meta/argument_specs.yaml index 74fbe56..70ec37a 100644 --- a/roles/service/meta/argument_specs.yaml +++ b/roles/service/meta/argument_specs.yaml @@ -251,6 +251,7 @@ argument_specs: type: str choices: - postgres + - mariadb - none required: false default: none diff --git a/roles/service/tasks/database.yaml b/roles/service/tasks/database.yaml index 5d790f5..624b1b7 100644 --- a/roles/service/tasks/database.yaml +++ b/roles/service/tasks/database.yaml @@ -1,22 +1,23 @@ --- +- name: Incude variables for database {{ service_database_type }} + ansible.builtin.include_vars: + file: database/{{ service_database_type }}.yaml + - name: Database container for {{ service_name }} ansible.builtin.import_role: name: container vars: container_name: "{{ service_name }}-{{ service_database_type }}" # This doesn't use _service_database_name to allow container role handlers to work - container_image: "{{ service_postgres_image }}:{{ service_postgres_tag }}" + container_image: "{{ _service_database_image }}" container_mounts: - type: volume source: "{{ _service_database_name }}" - destination: /var/lib/postgresql/data + destination: "{{ _service_database_mount_destination }}" container_networks: "{{ _service_database_networks }}" container_ip: >- {{ service_container_ip | ansible.utils.ipmath(1) if _service_static_ip else '' }} container_secrets: - name: "{{ _service_database_name }}" target: "{{ service_database_type }}" - container_env: - POSTGRES_USER: "{{ service_name | replace('-', '_') }}" - POSTGRES_PASSWORD_FILE: "/run/secrets/{{ service_database_type }}" - POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C" + container_env: "{{ _service_database_env }}" container_auto_update: "{{ service_auto_update }}" diff --git a/roles/service/vars/database/mariadb.yaml b/roles/service/vars/database/mariadb.yaml new file mode 100644 index 0000000..1586af5 --- /dev/null +++ b/roles/service/vars/database/mariadb.yaml @@ -0,0 +1,8 @@ +--- +_service_database_image: docker.io/library/mariadb:lts +_service_database_mount_destination: /var/lib/mysql +_service_database_env: + MARIADB_RANDOM_ROOT_PASSWORD: "1" + MARIADB_USER: "{{ service_name | replace('-', '_') }}" + MARIADB_DATABASE: "{{ service_name | replace('-', '_') }}" + MARIADB_PASSWORD_FILE: "/run/secrets/{{ service_database_type }}" diff --git a/roles/service/vars/database/postgres.yaml b/roles/service/vars/database/postgres.yaml new file mode 100644 index 0000000..350e5b4 --- /dev/null +++ b/roles/service/vars/database/postgres.yaml @@ -0,0 +1,7 @@ +--- +_service_database_image: "{{ service_postgres_image }}:{{ service_postgres_tag }}" +_service_database_mount_destination: /var/lib/postgresql/data +_service_database_env: + POSTGRES_USER: "{{ service_name | replace('-', '_') }}" + POSTGRES_PASSWORD_FILE: "/run/secrets/{{ service_database_type }}" + POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"