c1c91886b4
This should now be a largely functional deployment of mailman 3. There are still some bits that need testing but we'll use followup changes to force failure and hold nodes. This deployment of mailman3 uses upstream docker container images. We currently hack up uids and gids to accomodate that. We also hack up the settings file and bind mount it over the upstream file in order to use host networking. We override the hyperkitty index type to xapian. All list domains are hosted in a single installation and we use native vhosting to handle that. We'll deploy this to a new server and migrate one mailing list domain at a time. This will allow us to start with lists.opendev.org and test things like dmarc settings before expanding to the remaining lists. A migration script is also included, which has seen extensive testing on held nodes for importing copies of the production data sets. Change-Id: Ic9bf5cfaf0b87c100a6ce003a6645010a7b50358
115 lines
3.2 KiB
YAML
115 lines
3.2 KiB
YAML
- name: Check if domain exists
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/domains/{{ mm_site.listdomain }}'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: GET
|
|
body_format: json
|
|
status_code: [200, 404]
|
|
register: domain_exists
|
|
no_log: true
|
|
|
|
- name: Create list domain in mm3
|
|
when: domain_exists.status == 404
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/domains'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: POST
|
|
body_format: json
|
|
body:
|
|
mail_host: "{{ mm_site.listdomain }}"
|
|
status_code: [201]
|
|
no_log: true
|
|
|
|
- name: Check if list exists
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/lists/{{ mm_list.name }}@{{ mm_site.listdomain }}'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: GET
|
|
body_format: json
|
|
status_code: [200, 404]
|
|
register: list_exists
|
|
loop: "{{ mm_site.lists }}"
|
|
loop_control:
|
|
loop_var: mm_list
|
|
no_log: true
|
|
|
|
- name: Create lists in mm3
|
|
when: list_exists.results[exists_idx].status == 404
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/lists'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: POST
|
|
body_format: json
|
|
body:
|
|
fqdn_listname: "{{ mm_list.name }}@{{ mm_site.listdomain }}"
|
|
style_name: "{{ mm_list.private | default('false') | bool | ternary('private-default', 'legacy-default') }}"
|
|
status_code: [201]
|
|
loop: "{{ mm_site.lists }}"
|
|
loop_control:
|
|
loop_var: mm_list
|
|
index_var: exists_idx
|
|
no_log: true
|
|
|
|
- name: Set list properties in mm3
|
|
when: list_exists.results[exists_idx].status == 404
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/lists/{{ mm_list.name }}@{{ mm_site.listdomain }}/config'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: PATCH
|
|
body_format: json
|
|
body:
|
|
description: "{{ mm_list.description }}"
|
|
advertised: "{{ mm_list.private | default('false') | bool | ternary('false', 'true') }}"
|
|
# TODO enable this when lynx is present on the container images
|
|
# convert_html_to_plaintext: "true"
|
|
process_bounces: "false"
|
|
filter_extensions:
|
|
- "exe"
|
|
- "bat"
|
|
- "cmd"
|
|
- "com"
|
|
- "pif"
|
|
- "scr"
|
|
- "vbs"
|
|
- "cpl"
|
|
pass_types:
|
|
- "multipart/mixed"
|
|
- "multipart/alternative"
|
|
- "text/plain"
|
|
status_code: [204]
|
|
loop: "{{ mm_site.lists }}"
|
|
loop_control:
|
|
loop_var: mm_list
|
|
index_var: exists_idx
|
|
no_log: true
|
|
|
|
- name: Set list owner in mm3
|
|
when: list_exists.results[exists_idx].status == 404
|
|
uri:
|
|
url: 'http://localhost:8001/3.1/members'
|
|
url_username: restadmin
|
|
url_password: "{{ mailman3_rest_password }}"
|
|
force_basic_auth: yes
|
|
method: POST
|
|
body_format: json
|
|
body:
|
|
list_id: "{{ mm_list.name }}.{{ mm_site.listdomain }}"
|
|
subscriber: "{{ mm_list.owner }}"
|
|
role: "owner"
|
|
status_code: [201]
|
|
loop: "{{ mm_site.lists }}"
|
|
loop_control:
|
|
loop_var: mm_list
|
|
index_var: exists_idx
|
|
no_log: true
|