matrixmailer/tasks/main.yml

111 lines
3.4 KiB
YAML
Raw Normal View History

2022-09-01 22:04:29 +02:00
---
- name: Set OS dependent variables
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_version | lower }}.yml"
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_major_version | lower }}.yml"
- "{{ ansible_distribution | lower }}.yml"
- "{{ ansible_os_family | lower }}.yml"
- "{{ ansible_system | lower }}.yml"
paths:
- '{{ role_path }}/vars'
ignore_errors: True
- name: OS is supported
ansible.builtin.assert:
that: __os_supported
quiet: True
vars:
__os_supported: "{{ lookup('vars', '{}_os_supported'.format(role_name)) | bool }}"
- name: Assert matrixmailer version and build are defined
2022-09-01 22:04:29 +02:00
assert:
that: matrixmailer_version is defined and matrixmailer_build is defined and matrixmailer_config is defined
fail_msg: "The ansible variables 'matrixmailer_version', 'matrixmailer_build' and 'matrixmailer_config' need to be set to run this role."
2022-09-01 22:04:29 +02:00
- name: Create matrixmailer group
group:
name: "{{ matrixmailer_system_group }}"
state: present
- name: Create matrixmailer user
user:
name: "{{ matrixmailer_system_user }}"
group: "{{ matrixmailer_system_group }}"
comment: "Send e-mail to [matrix]"
system: yes
create_home: no
password_lock: yes
state: present
- name: Install matrixmailer from pre-built binary
block:
- name: Download matrixmailer
become: yes
get_url:
url: "https://gitea.a-0.me/philip/matrixmailer/releases/download/{{ matrixmailer_version }}/{{ matrixmailer_build }}"
dest: "{{ matrixmailer_binary_location }}"
owner: "{{ matrixmailer_system_user }}"
group: "{{ matrixmailer_system_group }}"
mode: 0500
when: matrixmailer_build != "from_source"
- name: Install matrixmailer custom-built from git repository
block:
- name: Clone repository
git:
repo: "{{ matrixmailer_git_repo }}"
depth: 1
dest: "{{ matrixmailer_build_tmp }}"
version: "{{ matrixmailer_git_branch }}"
- name: Install required packages
apt:
pkg:
- libssl-dev
- pkg-config
- curl
state: present
- name: Install Rust
command:
cmd: "curl https://sh.rustup.rs -sSf | sh"
- name: Install matrixmailer
command:
cmd: cargo build --release
chdir: "{{ matrixmailer_build_tmp }}"
- name: Copy built binary to final location
copy:
remote_src: yes
src: "{{ matrixmailer_build_tmp }}"/release/matrixmailer
dest: "{{ matrixmailer_binary_location }}"
owner: "{{ matrixmailer_system_user }}"
group: "{{ matrixmailer_system_group }}"
mode: 0500
when: matrixmailer_build == "from_source"
2022-09-01 22:04:29 +02:00
- name: Create config file directory
file:
name: "{{ matrixmailer_config_dir }}"
group: "{{ matrixmailer_system_group }}"
mode: 0770
state: directory
- name: Set config file
copy:
content: "{{ matrixmailer_config }}"
dest: "{{ matrixmailer_config_dir }}/config.yaml"
owner: "{{ matrixmailer_system_user }}"
group: "{{ matrixmailer_system_group }}"
mode: 0600
- name: Set systemd service
template:
src: matrixmailer.service.j2
dest: "{{ matrixmailer_systemd_service_file }}"
- name: Enable and (re)start systemd service
service:
name: matrixmailer
enabled: yes
state: restarted