Files
ansible-docker/roles/container/tasks/database.yml

80 lines
3.1 KiB
YAML

---
- name: Set postgres container vars
set_fact:
db_container_image: 'postgres:14-alpine'
db_container_env:
POSTGRES_USER: "{{ docker_service_name }}"
POSTGRES_PASSWORD: "{{ database_passwords[docker_service_name] }}"
db_container_data: /var/lib/postgresql/data
when: docker_database == 'postgres'
- name: Set mariadb container vars
set_fact:
db_container_image: mariadb:10
db_container_env:
MARIADB_USER: "{{ docker_service_name }}"
MARIADB_DATABASE: "{{ docker_service_name }}"
MARIADB_PASSWORD: "{{ database_passwords[docker_service_name] }}"
MARIADB_RANDOM_ROOT_PASSWORD: "{{ database_passwords[docker_service_name + '_root'] is not defined | string }}"
MARIADB_ROOT_PASSOWRD: "{{ database_passwords[docker_service_name + '_root'] | default(omit) }}"
db_container_data: /var/lib/mysql
db_image_port: 3306
when: docker_database == 'mariadb'
- name: Set mongo container vars
set_fact:
db_container_image: 'mongo:latest'
db_container_data: /data/db
when: docker_database == 'mongo'
- name: Reset db container mount definition var
set_fact:
db_container_mount_definition: []
- name: Set up database container data bind mount
when: docker_volume_type == 'bind'
block:
- name: Create db data bind mount directory for {{ docker_service_name }}
file:
path: "{{ docker_mounts_dir }}/db"
state: directory
- name: Set db_container_mount_definition for db data bind mount
set_fact:
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/db', 'target': db_container_data, 'type': 'bind'}] }}"
- name: Set up database container config bind mount
when: db_config_mounts_needed
block:
- name: Put mariadb config in place
template:
src: mariadb.cnf.j2
dest: "{{ docker_mounts_dir }}/mariadb.cnf"
- name: Set db_container_mount_definition for db config bind mount
set_fact:
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_mounts_dir + '/mariadb.cnf', 'target': '/etc/mysql/conf.d/custom.cnf', 'type': 'bind', 'read_only': true}] }}"
- name: Set db_container_mount_definition for db data named volume
set_fact:
db_container_mount_definition: "{{ db_container_mount_definition + [{'source': docker_service_name + '_db', 'target': db_container_data, 'type': 'volume'}] }}"
when: docker_volume_type == 'named'
- name: Set db published ports var
set_fact:
db_published_ports: ["127.0.0.1:{{ ports[docker_service_name].db }}:{{ db_image_port }}"]
when: ports[docker_service_name].db is defined
- name: Database container for {{ docker_service_name + ' (' + docker_database + ')' }}
docker_container:
name: "{{ docker_service_name }}_db"
image: "{{ db_container_image }}"
pull: true
env: "{{ db_container_env | default(omit) }}"
published_ports: "{{ db_published_ports | default(omit) }}"
restart_policy: always
mounts: "{{ db_container_mount_definition }}"
networks: "{{ container_networks | default(omit) }}"
log_driver: local