forked from ISTI-ansible-roles/ansible-roles
99 lines
3.5 KiB
YAML
99 lines
3.5 KiB
YAML
---
|
|
|
|
- name: Install system dependencies
|
|
package:
|
|
name: "{{ mailman_system_dependency_packages }}"
|
|
when: mailman_install_system_dependencies
|
|
|
|
# This is a separate task from the next one because `python3 -m venv` doesn't install wheel and pip needs it to build
|
|
# wheels (not strictly required, but preferred) and won't load it mid-invocation if installed during the next task
|
|
- name: Create Mailman venv
|
|
pip:
|
|
name: wheel
|
|
virtualenv: "{{ mailman_install_dir }}"
|
|
virtualenv_python: "{{ mailman_virtualenv_python | default(omit) }}"
|
|
virtualenv_command: "{{ mailman_virtualenv_command | default(omit) }}"
|
|
|
|
- name: Install Mailman and Python dependencies
|
|
pip:
|
|
name: "{{ mailman_packages + mailman_extra_packages }}"
|
|
virtualenv: "{{ mailman_install_dir }}"
|
|
|
|
- name: Create configuration, data, and state directories
|
|
file:
|
|
path: "{{ item.path }}"
|
|
owner: "{{ item.owner | default(omit) }}"
|
|
group: "{{ item.group | default(omit) }}"
|
|
mode: "{{ item.mode | default(omit) }}"
|
|
state: directory
|
|
with_items:
|
|
- path: "{{ mailman_etc_dir }}"
|
|
group: "{{ __mailman_group_name }}"
|
|
mode: "0750"
|
|
# Creates the parent /var/opt/mailman with default permissions
|
|
- path: "{{ mailman_var_dir | dirname }}"
|
|
- path: "{{ mailman_var_dir }}"
|
|
owner: "{{ __mailman_user_name }}"
|
|
group: "{{ __mailman_group_name }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_log_dir }}"
|
|
owner: "{{ __mailman_user_name }}"
|
|
group: "{{ __mailman_group_name }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_var_dir }}"
|
|
- path: "{{ mailman_django_var_dir }}/run"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_var_dir }}/db"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_var_dir }}/fulltext_index"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_var_dir }}/emails"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_project_dir }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
- path: "{{ mailman_django_log_dir }}"
|
|
mode: "0750"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
|
|
- name: Create HyperKitty attachment directory
|
|
file:
|
|
path: "{{ __mailman_django_config_merged.hyperkitty_attachment_folder }}"
|
|
owner: "{{ mailman_web_user }}"
|
|
group: "{{ mailman_web_group }}"
|
|
mode: "0750"
|
|
state: directory
|
|
when: __mailman_django_config_merged.hyperkitty_attachment_folder is defined
|
|
|
|
# TODO: This is needed to read settings_local.py from /etc/opt/mailman, but will it be needed for anything else?
|
|
# TODO: config option to control this?
|
|
- name: Add web user to Mailman user group
|
|
user:
|
|
name: "{{ mailman_web_user }}"
|
|
groups: "{{ __mailman_group_name }}"
|
|
|
|
- name: Install systemd service unit files
|
|
template:
|
|
src: "{{ item.src | default(item) }}.j2"
|
|
dest: /etc/systemd/system/{{ item.dest | default(item) }}
|
|
loop:
|
|
- mailman-core.service
|
|
- src: mailman-web.service
|
|
dest: mailman-web{{ '@' if mailman_domains is defined else '' }}.service
|
|
loop_control:
|
|
label: "{{ item.dest | default(item) }}"
|
|
when: mailman_process_manager == 'systemd'
|
|
notify:
|
|
- reload systemd manager configuration
|
|
|
|
# TODO: remove the non-instance service unit file if mailman_domains is defined, remove the instance service unit file
|