diff --git a/roles/container/defaults/main.yml b/roles/container/defaults/main.yml index 8f70550..a067c2f 100644 --- a/roles/container/defaults/main.yml +++ b/roles/container/defaults/main.yml @@ -3,6 +3,7 @@ docker_host_user: false docker_volume_type: named docker_mariadb_config: {} +docker_redis_persistence: false dockerfile: [] docker_phpmyadmin_basicauth: true diff --git a/roles/container/meta/argument_specs.yml b/roles/container/meta/argument_specs.yml index 0c7f00f..48c756b 100644 --- a/roles/container/meta/argument_specs.yml +++ b/roles/container/meta/argument_specs.yml @@ -63,7 +63,13 @@ argument_specs: elements: str choices: - memcached + - redis default: [] + docker_redis_persistence: + description: Whether to save redis data to persistent storage + type: bool + required: false + default: false docker_phpmyadmin_basicauth: description: Whether to enable basicauth for phpmyadmin type: bool diff --git a/roles/container/tasks/additional.yml b/roles/container/tasks/additional.yml index a5fabf7..7459509 100644 --- a/roles/container/tasks/additional.yml +++ b/roles/container/tasks/additional.yml @@ -10,3 +10,45 @@ - "{{ container_networks[0] }}" log_driver: local when: "'memcached' in docker_additional_services" + +- name: Redis + when: "'redis' in docker_additional_services" + block: + - name: Reset redis container mount definition var + set_fact: + redis_container_mount_definition: [] + + - name: Set up redis container data bind mount + when: docker_volume_type == 'bind' + block: + - name: Create redis data bind mount directory for {{ docker_service_name }} + file: + path: "{{ docker_mounts_dir }}/redis" + state: directory + + - name: Set redis_container_mount_definition for redis data bind mount + set_fact: + redis_container_mount_definition: + - source: "{{ docker_mounts_dir + '/redis' }}" + target: /data + type: bind + + - name: Set redis_container_mount_definition for redis data named volume + set_fact: + redis_container_mount_definition: + source: "{{ docker_service_name + '_redis' }}" + target: /data + type: volume + when: docker_volume_type == 'named' + + - name: "Redis container for {{ docker_service_name }}" + docker_container: + name: "{{ docker_service_name }}_redis" + image: redis:alpine + pull: true + restart_policy: always + mounts: "{{ redis_container_mount_definition }}" + command: "{{ '--save 60 1' if docker_redis_persistence else omit }}" + networks: + - "{{ container_networks[0] }}" + log_driver: local diff --git a/roles/container/tasks/main.yml b/roles/container/tasks/main.yml index b0324eb..01bb307 100644 --- a/roles/container/tasks/main.yml +++ b/roles/container/tasks/main.yml @@ -24,10 +24,6 @@ include_tasks: proxy.yml when: reverse_proxy_type != 'none' -- name: Additional services - include_tasks: additional.yml - when: docker_additional_services is defined - - name: Create directory /opt/{{ docker_service }} file: path: "/opt/{{ docker_service }}" @@ -80,6 +76,10 @@ include_tasks: database.yml when: docker_database != 'none' +- name: Additional services + include_tasks: additional.yml + when: docker_additional_services is defined + - name: Container volumes import_tasks: volumes.yml