diff --git a/inventory/service/groups.yaml b/inventory/service/groups.yaml index 89d3ada4d3..e98dfc4166 100644 --- a/inventory/service/groups.yaml +++ b/inventory/service/groups.yaml @@ -138,8 +138,6 @@ groups: - elasticsearch[0-9]*.open*.org - ethercalc[0-9]*.open*.org - health[0-9]*.openstack.org - - lists*.katacontainers.io - - lists*.open*.org - logstash-worker[0-9]*.open*.org - logstash[0-9]*.open*.org - mirror-update[0-9]*.openstack.org @@ -164,8 +162,6 @@ groups: - elasticsearch[0-9]*.open*.org - ethercalc[0-9]*.open*.org - health[0-9]*.openstack.org - - lists*.katacontainers.io - - lists*.open*.org - lists-dev[0-9]*.open*.org - logstash-worker[0-9]*.open*.org - logstash[0-9]*.open*.org diff --git a/inventory/service/host_vars/lists.katacontainers.io.yaml b/inventory/service/host_vars/lists.katacontainers.io.yaml index 5ce67ab800..e3788a85fa 100644 --- a/inventory/service/host_vars/lists.katacontainers.io.yaml +++ b/inventory/service/host_vars/lists.katacontainers.io.yaml @@ -58,3 +58,18 @@ exim_transports: headers_add = Errors-To: ${return_path} extra_users: - jbryce +mailman_multihost: false +mailman_listdomain: 'lists.katacontainers.io' +mailman_lists: + - name: kata-dev + description: 'Kata Containers Development Mailing List (not for usage questions)' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: kata-hypervisor + description: 'Discussion of security and virtualization targeted at container use cases' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: embargo-notice + description: 'Announcements of embargoed notices for the Kata Containers project' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" diff --git a/inventory/service/host_vars/lists.openstack.org.yaml b/inventory/service/host_vars/lists.openstack.org.yaml index 733c9094e6..40cde31870 100644 --- a/inventory/service/host_vars/lists.openstack.org.yaml +++ b/inventory/service/host_vars/lists.openstack.org.yaml @@ -94,3 +94,265 @@ exim_transports: headers_remove = Errors-To max_rcpt = 1 return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path} +mailman_multihost: true +mailman_sites: + - name: airship + listdomain: lists.airshipit.org + install_languages: ['en'] + lists: + - name: mailman + description: 'The mailman site list' + admin: 'nobody@openstack.org' + password: "{{ mailman_list_password }}" + - name: airship-announce + description: 'Announcements of Airship releases and other important information.' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: airship-discuss + description: 'Discussion of Airship usage and development.' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: airship-job-failures + description: 'Notification messages for failures from CICD jobs.' + admin: 'roman.gorshunov@att.com' + password: "{{ mailman_list_password }}" + - name: airship-security + description: 'Public Airship security advisories.' + admin: 'andrew.walters@att.com' + password: "{{ mailman_list_password }}" + - name: airship-embargo-notice + description: 'Embargoed security vulnerability announcements for Airship consumers.' + admin: 'andrew.walters@att.com' + password: "{{ mailman_list_password }}" + - name: opendev + listdomain: lists.opendev.org + install_languages: ['en'] + lists: + - name: mailman + description: 'The mailman site list' + admin: 'nobody@openstack.org' + password: "{{ mailman_list_password }}" + - name: rust-vmm + description: 'Collaborating on Rust-based virtual machine monitors.' + admin: 'claire@openstack.org' + password: "{{ mailman_list_password }}" + - name: rustyk8s + description: 'Collaborating on Rust-based Kubernetes API.' + admin: 'allison@lohutok.net' + password: "{{ mailman_list_password }}" + - name: nbmp-discuss + description: 'Collaborating on Network Based Media Processing related platform and infrastructure systems usage and development.' + admin: 'ildiko@openstack.org' + password: "{{ mailman_list_password }}" + - name: service-announce + description: 'Announcement list for OpenDev services.' + admin: 'cboylan@sapwetik.org' + password: "{{ mailman_list_password }}" + - name: service-discuss + description: 'Discussion list for OpenDev services.' + admin: 'cboylan@sapwetik.org' + password: "{{ mailman_list_password }}" + - name: service-incident + description: 'Private list for OpenDev incident coordination.' + admin: 'cboylan@sapwetik.org' + password: "{{ mailman_list_password }}" + - name: openinfralabs + description: 'Discussion of the OpenInfra Labs academic and research resource sharing effort' + admin: 'mnaser@vexxhost.com' + password: "{{ mailman_list_password }}" + - name: openstack + listdomain: lists.openstack.org + install_languages: ['de', 'fr', 'it', 'ko', 'ru', 'vi', 'zh_TW'] + lists: + - name: mailman + description: 'The mailman site list' + admin: 'nobody@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-es + description: 'Lista de correo acerca de OpenStack en español' + admin: 'flavio@redhat.com' + password: "{{ mailman_list_password }}" + - name: openstack-fr + description: 'List of the OpenStack french user group' + admin: 'erwan@erwan.com' + password: "{{ mailman_list_password }}" + - name: openstack-de + description: 'List for German-speaking OpenStack users' + admin: 'christian@berendt.io' + password: "{{ mailman_list_password }}" + - name: openstack-i18n + description: 'List of the OpenStack Internationalization team.' + admin: 'guoyingc@cn.ibm.com' + password: "{{ mailman_list_password }}" + - name: openstack-i18n-de + description: 'List of the German OpenStack Internationalization team.' + admin: 'robert.simai@suse.com' + password: "{{ mailman_list_password }}" + - name: openstack-ir + description: 'OpenStack IRAN Community Discussions in Persian/Farsi' + admin: 'Roozbeh.Shafiee@Gmail.Com' + password: "{{ mailman_list_password }}" + - name: openstack-it + description: 'Discussioni su OpenStack in italiano' + admin: 'stefano@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-el + description: 'List of the OpenStack Greek User Group' + admin: 'aparathyras@stackmasters.eu' + password: "{{ mailman_list_password }}" + - name: openstack-travel-committee + description: 'Private discussions for the OpenStack Travel Program Committee for Hong Kong Summit 2013.' + admin: 'communitymngr@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-personas + description: 'A group of designers, researchers, developers, writers and users that are creating a set of personas for OpenStack that are intended to help drive development around the needs of our users.' + admin: 'pieter.c.kruithof-jr@hp.com' + password: "{{ mailman_list_password }}" + - name: openstack-vi + description: 'Discussions in Vietnamese - please add Vietnamese translation here' + admin: 'hang.tran@dtt.vn' + password: "{{ mailman_list_password }}" + - name: openstack-tw + description: 'OpenStack Taiwan User Group 臺灣使用者郵件群組)' + admin: 'macjacktw@hotmail.com' + password: "{{ mailman_list_password }}" + - name: openstack-ko + description: 'OpenStack Korea Community Discussions in Korean (오픈스택 한국 커뮤니티 메일링리스트)' + admin: 'ianyrchoi@gmail.com' + password: "{{ mailman_list_password }}" + - name: openstack-ru + description: 'Рассылка для обсуждения OpenStack на русском' + admin: 'ilyaalekseyev@acm.org' + password: "{{ mailman_list_password }}" + - name: openstack-zh + description: 'OpenStack社区中文讨论群组' + admin: 'yeluaiesec@gmail.com' + password: "{{ mailman_list_password }}" + - name: nov-2013-track-chairs + description: 'Coordination of tracks at OpenStack Summit April 2013' + admin: 'claire@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-track-chairs + description: 'Coordination of tracks at OpenStack Summits' + admin: 'claire@openstack.org' + password: "{{ mailman_list_password }}" + - name: summitsponsors + description: 'Coordination among OpenStack Summit event sponsors' + admin: 'claire@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-sos + description: 'Coordination of activities for Significant Others at Summits' + admin: 'dms@danplanet.com' + password: "{{ mailman_list_password }}" + - name: defcore-committee + description: 'Discussions of the OpenStack Foundation Core Definition Committee' + admin: 'josh@openstack.org' + password: "{{ mailman_list_password }}" + - name: ambassadors + description: 'Private discussions between OpenStack Ambassadors' + admin: 'tom@openstack.org' + password: "{{ mailman_list_password }}" + - name: superuser + description: 'Discussions for Superuser editorial advisors to collaborate, and for readers to be able to contact the editorial team to make suggestions, provide feedback' + admin: 'lauren@openstack.org' + password: "{{ mailman_list_password }}" + - name: admin-cert-wg + description: 'Collaboration workspace for members of the Certified OpenStack Administrator Working Group of the User Commitee/Board.' + admin: 'heidi@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-api-consumers + description: 'Discussions around consuming the OpenStack REST APIs and development of API-consuming SDKs and frameworks' + admin: 'mordred@inaugust.com' + password: "{{ mailman_list_password }}" + - name: enterprise-wg + description: 'Collaboration workspace for members of the Win The Enterprise Working Group of the User Commitee/Board.' + admin: 'carol.l.barrett@intel.com' + password: "{{ mailman_list_password }}" + - name: product-wg + description: 'Collaboration workspace for OpenStack-related Product Managers working group.' + admin: 'stefano@openstack.org' + password: "{{ mailman_list_password }}" + - name: tax-affairs + description: 'board committee focused on tax issues.' + admin: 'seanroberts66@gmail.com' + password: "{{ mailman_list_password }}" + - name: third-party-announce + description: 'Announcements for third party CI operators.' + admin: 'anteaya@anteaya.info' + password: "{{ mailman_list_password }}" + - name: foundation-testing-standards + description: 'OpenStack Foundation test standards (for humans, not drivers) working group list.' + admin: 'seanroberts66@gmail.com' + password: "{{ mailman_list_password }}" + - name: analyst-relations + description: 'Coordination of Analyst Relations Working Group.' + admin: 'lauren@openstack.org' + password: "{{ mailman_list_password }}" + - name: app-catalog-admin + description: 'Coordinate admin details for OpenStack Community App Catalog.' + admin: 'doc@aedo.net' + password: "{{ mailman_list_password }}" + - name: openstack-i18n-fr + description: 'List of the OpenStack Internationalization team, french local group.' + admin: 'jftalta@gmail.com' + password: "{{ mailman_list_password }}" + - name: release-job-failures + description: 'Notification messages for failures from release-related build jobs.' + admin: 'doug@doughellmann.com' + password: "{{ mailman_list_password }}" + - name: embargo-notice + description: 'Announcements to stakeholders for embargoed security vulnerabilities.' + admin: 'jeremy@openstack.org' + password: "{{ mailman_list_password }}" + - name: release-announce + description: 'Announcement of official OpenStack releases.' + admin: 'thierry@openstack.org' + password: "{{ mailman_list_password }}" + - name: edge-computing + description: 'Organizing efforts around the edge-computing focus area.' + admin: 'claire@openstack.org' + password: "{{ mailman_list_password }}" + - name: openstack-mentoring + description: 'List to coordinate interactions between mentors and mentees of the OpenStack mentoring program. Also for questions about the mentoring program (i.e. how to get involved, how it works, etc.' + admin: 'amy@demarco.com' + password: "{{ mailman_list_password }}" + - name: openstack-discuss + description: 'Discussion of OpenStack usage and development.' + admin: 'fungi@yuggoth.org' + password: "{{ mailman_list_password }}" + - name: starlingx + listdomain: lists.starlingx.io + install_languages: ['en'] + lists: + - name: mailman + description: 'The mailman site list' + admin: 'nobody@openstack.org' + password: "{{ mailman_list_password }}" + - name: starlingx-announce + description: 'Announcements of StarlingX releases and other important information.' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: starlingx-discuss + description: 'Discussion of StarlingX usage and development.' + admin: 'jonathan@openstack.org' + password: "{{ mailman_list_password }}" + - name: zuul + listdomain: lists.zuul-ci.org + install_languages: ['en'] + lists: + - name: mailman + description: 'The mailman site list' + admin: 'nobody@openstack.org' + password: "{{ mailman_list_password }}" + - name: zuul-announce + description: 'Announcements of Zuul releases and other important information.' + admin: 'corvus@inaugust.com' + password: "{{ mailman_list_password }}" + - name: zuul-discuss + description: 'Discussion of Zuul usage and development.' + admin: 'corvus@inaugust.com' + password: "{{ mailman_list_password }}" + - name: zuul-jobs-failures + description: 'Gets notifications about zuul-jobs periodic job failures.' + admin: 'ssbarnea@redhat.com' + password: "{{ mailman_list_password }}" diff --git a/manifests/site.pp b/manifests/site.pp index 84cf39e6cf..24f1ed8b6d 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -17,24 +17,6 @@ node /^cacti\d+\.open.*\.org$/ { } } -# Node-OS: xenial -node /^lists\d*\.open.*\.org$/ { - class { 'openstack_project::server': } - - class { 'openstack_project::lists': - listpassword => hiera('listpassword'), - } -} - -# Node-OS: xenial -node /^lists\d*\.katacontainers\.io$/ { - class { 'openstack_project::server': } - - class { 'openstack_project::kata_lists': - listpassword => hiera('listpassword'), - } -} - # Node-OS: xenial node /^paste\d*\.open.*\.org$/ { $group = "paste" diff --git a/playbooks/roles/install-ansible/files/inventory_plugins/test-fixtures/results.yaml b/playbooks/roles/install-ansible/files/inventory_plugins/test-fixtures/results.yaml index 2bbf13d5d6..41d0c15c91 100644 --- a/playbooks/roles/install-ansible/files/inventory_plugins/test-fixtures/results.yaml +++ b/playbooks/roles/install-ansible/files/inventory_plugins/test-fixtures/results.yaml @@ -20,8 +20,6 @@ results: lists.katacontainers.io: - mailman - - puppet - - puppet4 logstash-worker02.openstack.org: - logstash-worker diff --git a/playbooks/roles/mailman-list/README.rst b/playbooks/roles/mailman-list/README.rst new file mode 100644 index 0000000000..a2ae92ffb6 --- /dev/null +++ b/playbooks/roles/mailman-list/README.rst @@ -0,0 +1 @@ +Role to create a mailman list if it doesn't already exist diff --git a/playbooks/roles/mailman-list/tasks/main.yaml b/playbooks/roles/mailman-list/tasks/main.yaml new file mode 100644 index 0000000000..e6361fb39e --- /dev/null +++ b/playbooks/roles/mailman-list/tasks/main.yaml @@ -0,0 +1,35 @@ +# The bulk of this role can likely be replaced with: +# https://github.com/CCI-MOC/moc-ansible-mailman +# Just a note for possible future improvement. + +- name: Block for multihost lists + block: + - name: Set mailman site root fact + set_fact: + mm_site_root: "/srv/mailman/{{ mm_site_name }}" + cacheable: no + - name: Check if the site list exists + command: list_lists --bare + environment: + MAILMAN_SITE_DIR: "{{ mm_site_root }}" + register: listlists + - name: Create the site list if it doesn't exist + command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}" + environment: + MAILMAN_SITE_DIR: "{{ mm_site_root }}" + when: + - ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0 + when: mm_site_name != "_default" + +- name: Block for normal lists + block: + - name: Check if the list exists + command: list_lists --bare + register: listlists + - name: Create the list if it doesn't exist + command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}" + when: + - ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0 + when: mm_site_name == "_default" + +# TODO we accept a description parameter but don't do anything with it diff --git a/playbooks/roles/mailman-site/README.rst b/playbooks/roles/mailman-site/README.rst new file mode 100644 index 0000000000..59fa9a7926 --- /dev/null +++ b/playbooks/roles/mailman-site/README.rst @@ -0,0 +1 @@ +Role to configure a mailman site in a multihost environment diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbdetails.html b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbdetails.html new file mode 100644 index 0000000000..a6b7eb96d6 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbdetails.html @@ -0,0 +1,60 @@ +The administrative requests are displayed in one of two ways, on a summary page, and on a details page. +The summary page contains pending subscription and unsubscription +requests, as well as postings being held for your approval, grouped by +sender email address. The details page contains a more detailed view of +each held message, including the all the message's headers and an +excerpt of the message body. + +
On all the pages, the following actions are available: + +
For held messages, turn on the Preserve option if you want to +save a copy of the message for the site administrator. This is useful +for abusive messages that you want to discard, but need to keep a record +of for later inspection. + +
Turn on the Forward to option, and fill in the forwarding +address if you want to forward the message to someone else not on the +list. To edit a held message before it is sent on to the list, you +should forward the message to yourself (or the list owners), and discard +the original message. Then, when the message shows up in your mailbox, +make your edits and resend the message to the list, including an +Approved: header with the list password as its value. It is +proper netiquette in this case to include a note in the resent message, +explaining that you have modified the text. + +
If the sender is a list member who is being moderated, you can +optionally clear their moderation flag. This is useful when your list +is configured to put new members on probation, and you've decided that +this member can be trusted to post to the list without approval. + +
If the sender is not a list member, you can add the email address to +a sender filter. Sender filters are described on the sender filter privacy page, and may be one of +auto-accept (Accepts), auto-hold (Holds), +auto-reject (Rejects), or auto-discard (Discards). This +option will not be available if the address is already on one of the +sender filters. + +
When you're finished, click on the Submit All Data button at +the top or bottom of the page. This button will submit all selected +actions for all administrative requests that you've made a decision for. + +
Return to the summary page. diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbpreamble.html b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbpreamble.html new file mode 100644 index 0000000000..659b77e729 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbpreamble.html @@ -0,0 +1,10 @@ +This page contains a subset of the %(listname)s mailing list +postings that are being held for your approval. It currently shows +%(description)s + +
For each administrative request, please select the action to take, +clicking on the Submit All Data when finished. More detailed +instructions are available here. + +
You can also view a summary of all +pending requests. diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbsummary.html b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbsummary.html new file mode 100644 index 0000000000..20ffef5846 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbsummary.html @@ -0,0 +1,14 @@ +This page contains a summary of the current set of administrative +requests requiring your approval for the +%(listname)s mailing list. +First, you will find the list of pending +subscription and unsubscription requests, if any, followed by any +postings being held for your approval. + +
For each administrative request, please select the action to take, +clicking on the Submit All Data button when finished. +More detailed instructions are also +available. + +
You can also view the details of all +held postings. diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminsubscribeack.txt b/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminsubscribeack.txt new file mode 100644 index 0000000000..388a3a2401 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminsubscribeack.txt @@ -0,0 +1,3 @@ +%(member)s has been successfully subscribed to %(listname)s. + + diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminunsubscribeack.txt b/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminunsubscribeack.txt new file mode 100644 index 0000000000..2ebcfeb707 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/adminunsubscribeack.txt @@ -0,0 +1,2 @@ +%(member)s has been removed from %(listname)s. + diff --git a/playbooks/roles/mailman-site/files/openstack/html-templates-en/admlogin.html b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admlogin.html new file mode 100644 index 0000000000..4dd2574c27 --- /dev/null +++ b/playbooks/roles/mailman-site/files/openstack/html-templates-en/admlogin.html @@ -0,0 +1,40 @@ + +
+
+ Last message date:
+ %(lastdate)s
+ Archived on: %(archivedate)s
+
+