--- - name: "Configure apprise application" hosts: all vars: app_name: "apprise" app_user: "{{ app_name }}" app_owner_uid: 1104 app_owner_gid: 1104 base_dir: "{{ (application_dir, app_name) | path_join }}" config_dir: "{{ (base_dir, 'config') | path_join }}" tasks: # Apprise молча не доставит уведомление, если id комнаты записан без # префикса: значение без '!' и '#' плагин matrix трактует как алиас. - name: "Check matrix room id format" ansible.builtin.assert: that: - notifications_matrix_room is match('^[!#]') fail_msg: "notifications_matrix_room: нужен '!room_id:server' или '#alias:server'" quiet: true - name: "Create user and environment" ansible.builtin.import_role: name: owner vars: owner_name: "{{ app_user }}" owner_uid: "{{ app_owner_uid }}" owner_gid: "{{ app_owner_gid }}" - name: "Create application internal directories" ansible.builtin.file: path: "{{ item }}" state: "directory" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0750" loop: - "{{ base_dir }}" - "{{ config_dir }}" # Бандл назывался server, пока источник уведомлений был один. Файл остался # бы на сервере с прежними секретами, поэтому удаляем его явно. - name: "Remove renamed apprise config" ansible.builtin.file: path: "{{ config_dir }}/server.cfg" state: "absent" - name: "Copy apprise config" ansible.builtin.template: src: "./files/{{ app_name }}/backups.template.cfg" dest: "{{ config_dir }}/backups.cfg" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" # Файл содержит секреты из vault — без no_log их печатает --diff. no_log: true notify: "Restart application" - name: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.template.yml" dest: "{{ base_dir }}/docker-compose.yml" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "present" remove_orphans: true tags: - run-app handlers: # Приложение читает конфиги только при старте, а `state: present` не # пересоздаёт контейнер, если docker-compose.yml не изменился, — поэтому # правку конфига применяет только явный рестарт. - name: "Restart application" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "restarted" tags: - run-app