Files
ansible-domo/roles/mailserver/tasks/main.yml
Twirre Meulenbelt b44ff6f808 as deployed
2026-06-28 08:43:43 +02:00

87 lines
2.7 KiB
YAML

---
- name: Ensure mail service user exists
ansible.builtin.user:
name: "{{ mailserver.service_user }}"
groups:
- "{{ mailserver.service_group }}"
append: true
system: true
shell: /usr/sbin/nologin
create_home: false
- name: Ensure mailserver directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ mailserver.service_user }}"
group: "{{ mailserver.service_group }}"
mode: "0755"
loop:
- "{{ mailserver.path }}"
- "{{ mailserver.path }}/docker-data"
- "{{ mailserver.path }}/docker-data/dms/mail-data"
- "{{ mailserver.path }}/docker-data/dms/mail-state"
- "{{ mailserver.path }}/docker-data/dms/mail-logs"
- "{{ mailserver.path }}/docker-data/dms/config"
- name: Render mailserver environment file
ansible.builtin.template:
src: mailserver.env.j2
dest: "{{ mailserver.path }}/mailserver.env"
owner: "{{ mailserver.service_user }}"
group: "{{ mailserver.service_group }}"
mode: "0640"
register: mailserver_env
- name: Render mailserver accounts file
ansible.builtin.copy:
dest: "{{ mailserver.path }}/docker-data/dms/config/postfix-accounts.cf"
content: "{{ vault_mailserver_accounts | default('# add mail accounts here\n') }}"
owner: "{{ mailserver.service_user }}"
group: "{{ mailserver.service_group }}"
mode: "0600"
register: mailserver_accounts
- name: Render mailserver compose file
ansible.builtin.template:
src: compose.yaml.j2
dest: "{{ mailserver.path }}/compose.yaml"
owner: "{{ mailserver.service_user }}"
group: "{{ mailserver.service_group }}"
mode: "0640"
register: mailserver_compose
- name: Install mailserver compose systemd unit
ansible.builtin.template:
src: mailserver-compose.service.j2
dest: /etc/systemd/system/mailserver-compose.service
owner: root
group: root
mode: "0644"
register: mailserver_unit
- name: Reload systemd for mailserver unit changes
ansible.builtin.systemd_service:
daemon_reload: true
when: mailserver_unit.changed
- name: Check whether live mailserver certificate exists
ansible.builtin.stat:
path: "{{ mailserver.tls_root_path }}/live/{{ mailserver.hostname }}/fullchain.pem"
register: mailserver_live_certificate
when: mailserver.env.SSL_TYPE | default('') == 'letsencrypt'
- name: Enable mailserver compose stack
ansible.builtin.service:
name: mailserver-compose
state: >-
{{
'restarted'
if (mailserver_env.changed or mailserver_accounts.changed or mailserver_compose.changed or mailserver_unit.changed)
else 'started'
}}
enabled: true
when: >-
mailserver.env.SSL_TYPE | default('') != 'letsencrypt'
or mailserver_live_certificate.stat.exists | default(false)