Matrix Docker Ansible eploy
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

105 строки
3.9 KiB

  1. ---
  2. #
  3. # Tasks related to setting up an internal redis server
  4. #
  5. - name: Ensure redis Docker image is pulled
  6. docker_image:
  7. name: "{{ matrix_redis_docker_image_to_use }}"
  8. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  9. force_source: "{{ matrix_redis_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  10. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_redis_docker_image_force_pull }}"
  11. when: matrix_redis_enabled | bool
  12. register: result
  13. retries: "{{ matrix_container_retries_count }}"
  14. delay: "{{ matrix_container_retries_delay }}"
  15. until: result is not failed
  16. - name: Ensure redis paths exist
  17. ansible.builtin.file:
  18. path: "{{ item }}"
  19. state: directory
  20. mode: 0700
  21. owner: "{{ matrix_user_username }}"
  22. group: "{{ matrix_user_username }}"
  23. with_items:
  24. - "{{ matrix_redis_base_path }}"
  25. - "{{ matrix_redis_data_path }}"
  26. when: matrix_redis_enabled | bool
  27. # We do this as a separate task, because:
  28. # - we'd like to do it for the data path only, not for the base path (which contains root-owned environment variable files we'd like to leave as-is)
  29. # - we need to do it without `mode`, or we risk making certain `.conf` and other files's executable bit to flip to true
  30. - name: Ensure redis data path ownership is correct
  31. ansible.builtin.file:
  32. path: "{{ matrix_redis_data_path }}"
  33. state: directory
  34. owner: "{{ matrix_user_username }}"
  35. group: "{{ matrix_user_username }}"
  36. recurse: true
  37. when: matrix_redis_enabled | bool
  38. - name: Ensure redis environment variables file created
  39. ansible.builtin.template:
  40. src: "{{ role_path }}/templates/{{ item }}.j2"
  41. dest: "{{ matrix_redis_base_path }}/{{ item }}"
  42. mode: 0644
  43. with_items:
  44. - "redis.conf"
  45. when: matrix_redis_enabled | bool
  46. - name: Ensure matrix-redis.service installed
  47. ansible.builtin.template:
  48. src: "{{ role_path }}/templates/systemd/matrix-redis.service.j2"
  49. dest: "{{ matrix_systemd_path }}/matrix-redis.service"
  50. mode: 0644
  51. register: matrix_redis_systemd_service_result
  52. when: matrix_redis_enabled | bool
  53. - name: Ensure systemd reloaded after matrix-redis.service installation
  54. ansible.builtin.service:
  55. daemon_reload: true
  56. when: "matrix_redis_enabled | bool and matrix_redis_systemd_service_result.changed"
  57. #
  58. # Tasks related to getting rid of the internal redis server (if it was previously enabled)
  59. #
  60. - name: Check existence of matrix-redis service
  61. ansible.builtin.stat:
  62. path: "{{ matrix_systemd_path }}/matrix-redis.service"
  63. register: matrix_redis_service_stat
  64. when: "not matrix_redis_enabled | bool"
  65. - name: Ensure matrix-redis is stopped
  66. ansible.builtin.service:
  67. name: matrix-redis
  68. state: stopped
  69. enabled: false
  70. daemon_reload: true
  71. when: "not matrix_redis_enabled | bool and matrix_redis_service_stat.stat.exists"
  72. - name: Ensure matrix-redis.service doesn't exist
  73. ansible.builtin.file:
  74. path: "{{ matrix_systemd_path }}/matrix-redis.service"
  75. state: absent
  76. when: "not matrix_redis_enabled | bool and matrix_redis_service_stat.stat.exists"
  77. - name: Ensure systemd reloaded after matrix-redis.service removal
  78. ansible.builtin.service:
  79. daemon_reload: true
  80. when: "not matrix_redis_enabled | bool and matrix_redis_service_stat.stat.exists"
  81. - name: Check existence of matrix-redis local data path
  82. ansible.builtin.stat:
  83. path: "{{ matrix_redis_data_path }}"
  84. register: matrix_redis_data_path_stat
  85. when: "not matrix_redis_enabled | bool"
  86. # We just want to notify the user. Deleting data is too destructive.
  87. - name: Notify if matrix-redis local data remains
  88. ansible.builtin.debug:
  89. msg: "Note: You are not using a local redis instance, but some old data remains from before in `{{ matrix_redis_data_path }}`. Feel free to delete it."
  90. when: "not matrix_redis_enabled | bool and matrix_redis_data_path_stat.stat.exists"