ansible-roles/library/roles/mailman/tasks/install_pip.yml

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