From 70ecff8cafd82fe4b321862feeba896e37f0ab2c Mon Sep 17 00:00:00 2001 From: "Philip (a-0)" <@ph:a-0.me> Date: Thu, 1 Sep 2022 22:04:29 +0200 Subject: [PATCH] Initial commit --- defaults/main.yml | 2 + handlers/main.yml | 1 + meta/main.yml | 2 + tasks/main.yml | 76 +++++++++++++++++++++++++++++++ templates/matrixmailer.service.j2 | 15 ++++++ vars/debian.yml | 8 ++++ 6 files changed, 104 insertions(+) create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/matrixmailer.service.j2 create mode 100644 vars/debian.yml diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..91217dc --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,2 @@ +--- +matrixmailer_os_supported: False diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..2002130 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,2 @@ +--- +galaxy_info: \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..32c782f --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,76 @@ +--- +- 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 system_spec are defined + assert: + that: matrixmailer_version is defined and matrixmailer_system_spec is defined and matrixmailer_config is defined + fail_msg: "The ansible variables 'matrixmailer_version', 'matrixmailer_system_spec' and 'matrixmailer_config' need to be set to run this role." + +- 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: Download matrixmailer + become: yes + get_url: + url: "https://gitea.a-0.me/philip/matrixmailer/releases/download/{{ matrixmailer_version }}/{{ matrixmailer_system_spec }}" + dest: "{{ matrixmailer_binary_location }}" + owner: "{{ matrixmailer_system_user }}" + group: "{{ matrixmailer_system_group }}" + mode: 0500 + +- 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 \ No newline at end of file diff --git a/templates/matrixmailer.service.j2 b/templates/matrixmailer.service.j2 new file mode 100644 index 0000000..d11b7c7 --- /dev/null +++ b/templates/matrixmailer.service.j2 @@ -0,0 +1,15 @@ +[Unit] +Description=matrixmailer - Send e-mail to [matrix] +After=syslog.target +After=network.target + +[Service] +Type=simple +ExecStart={{ matirxmailer_binary_location }} {{ matrixmailer_config_dir }}/config.yaml +Restart=always +RestartSec=1s +User={{ matrixmailer_system_user }} +Group={{ matrixmailer_system_group }} + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/vars/debian.yml b/vars/debian.yml new file mode 100644 index 0000000..738e1ab --- /dev/null +++ b/vars/debian.yml @@ -0,0 +1,8 @@ +--- +matrixmailer_os_supported: True + +matirxmailer_binary_location: /usr/bin/matrixmailer +matrixmailer_config_dir: /etc/matrixmailer +matrixmailer_systemd_service_file: /etc/systemd/system/matrixmailer.service +matrixmailer_system_user: matrixmailer +matrixmailer_system_group: "{{ matrixmailer_system_user }}" \ No newline at end of file