mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-12-23 04:55:46 +00:00
5eed874199
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/716 This patch makes us use more fully-qualified container image names (either prefixed with docker.io/ or with localhost/). The latter happens when self-building is enabled. We've recently had issues where if an image was removed manually and the service was restarted (making `docker run` fetch it from Docker Hub, etc.), we'd end up with a pulled image, even though we're aiming for a self-built one. Re-running the playbook would then not do a rebuild, because: - the image with that name already exists (even though it's something else) - we sometimes had conditional logic where we'd build only if the git repo changed By explicitly changing the name of the images (prefixing with localhost/), we avoid such confusion and the possibility that we'd automatically pul something which is not what we expect. Also, I've removed that condition where building would happen on git changes only. We now always build (unless an image with that name already exists). We just force-build when the git repo changes.
130 lines
5.0 KiB
YAML
130 lines
5.0 KiB
YAML
---
|
|
|
|
#
|
|
# Tasks related to setting up Element
|
|
#
|
|
|
|
- name: Ensure Element paths exists
|
|
file:
|
|
path: "{{ item.path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- { path: "{{ matrix_client_element_data_path }}", when: true }
|
|
- { path: "{{ matrix_client_element_docker_src_files_path }}", when: "{{ matrix_client_element_container_image_self_build }}" }
|
|
when: matrix_client_element_enabled|bool and item.when
|
|
|
|
- name: Ensure Element Docker image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_client_element_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_client_element_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
|
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_client_element_docker_image_force_pull }}"
|
|
when: matrix_client_element_enabled|bool and not matrix_client_element_container_image_self_build
|
|
|
|
- name: Ensure Element repository is present on self-build
|
|
git:
|
|
repo: https://github.com/vector-im/riot-web.git
|
|
dest: "{{ matrix_client_element_docker_src_files_path }}"
|
|
version: "{{ matrix_client_element_docker_image.split(':')[1] }}"
|
|
force: "yes"
|
|
register: matrix_client_element_git_pull_results
|
|
when: "matrix_client_element_enabled|bool and matrix_client_element_container_image_self_build|bool"
|
|
|
|
- name: Ensure Element Docker image is built
|
|
docker_image:
|
|
name: "{{ matrix_client_element_docker_image }}"
|
|
source: build
|
|
force_source: "{{ matrix_client_element_git_pull_results.changed }}"
|
|
build:
|
|
dockerfile: Dockerfile
|
|
path: "{{ matrix_client_element_docker_src_files_path }}"
|
|
pull: yes
|
|
when: "matrix_client_element_enabled|bool and matrix_client_element_container_image_self_build|bool"
|
|
|
|
- name: Ensure Element configuration installed
|
|
copy:
|
|
content: "{{ matrix_client_element_configuration|to_nice_json }}"
|
|
dest: "{{ matrix_client_element_data_path }}/config.json"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
when: matrix_client_element_enabled|bool
|
|
|
|
- name: Ensure Element config files installed
|
|
template:
|
|
src: "{{ item.src }}"
|
|
dest: "{{ matrix_client_element_data_path }}/{{ item.name }}"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- {src: "{{ role_path }}/templates/nginx.conf.j2", name: "nginx.conf"}
|
|
- {src: "{{ role_path }}/templates/welcome.html.j2", name: "welcome.html"}
|
|
- {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"}
|
|
when: "matrix_client_element_enabled|bool and item.src is not none"
|
|
|
|
- name: Ensure Element config files removed
|
|
file:
|
|
path: "{{ matrix_client_element_data_path }}/{{ item.name }}"
|
|
state: absent
|
|
with_items:
|
|
- {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"}
|
|
when: "matrix_client_element_enabled|bool and item.src is none"
|
|
|
|
- name: Ensure matrix-client-element.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-client-element.service.j2"
|
|
dest: "{{ matrix_systemd_path }}/matrix-client-element.service"
|
|
mode: 0644
|
|
register: matrix_client_element_systemd_service_result
|
|
when: matrix_client_element_enabled|bool
|
|
|
|
- name: Ensure systemd reloaded after matrix-client-element.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_client_element_enabled and matrix_client_element_systemd_service_result.changed"
|
|
|
|
#
|
|
# Tasks related to getting rid of Element (if it was previously enabled)
|
|
#
|
|
|
|
- name: Check existence of matrix-client-element.service
|
|
stat:
|
|
path: "{{ matrix_systemd_path }}/matrix-client-element.service"
|
|
register: matrix_client_element_service_stat
|
|
when: "not matrix_client_element_enabled|bool"
|
|
|
|
- name: Ensure matrix-client-element is stopped
|
|
service:
|
|
name: matrix-client-element
|
|
state: stopped
|
|
daemon_reload: yes
|
|
register: stopping_result
|
|
when: "not matrix_client_element_enabled|bool and matrix_client_element_service_stat.stat.exists"
|
|
|
|
- name: Ensure matrix-client-element.service doesn't exist
|
|
file:
|
|
path: "{{ matrix_systemd_path }}/matrix-client-element.service"
|
|
state: absent
|
|
when: "not matrix_client_element_enabled|bool and matrix_client_element_service_stat.stat.exists"
|
|
|
|
- name: Ensure systemd reloaded after matrix-client-element.service removal
|
|
service:
|
|
daemon_reload: yes
|
|
when: "not matrix_client_element_enabled|bool and matrix_client_element_service_stat.stat.exists"
|
|
|
|
- name: Ensure Element paths doesn't exist
|
|
file:
|
|
path: "{{ matrix_client_element_data_path }}"
|
|
state: absent
|
|
when: "not matrix_client_element_enabled|bool"
|
|
|
|
- name: Ensure Element Docker image doesn't exist
|
|
docker_image:
|
|
name: "{{ matrix_client_element_docker_image }}"
|
|
state: absent
|
|
when: "not matrix_client_element_enabled|bool"
|