Jeremy Stanley bf81097a85 Skip notification prompt for newlist command
Mailman's newlist command helpfully prompts on the TTY waiting for
the user to press enter so that a message will be sent to the list
admin containing the initial configuration password or ctrl-C to
abort notifying. Unfortunately, Ansible's command tasks look enough
like an interactive TTY to confuse newlist into thinking it should
do the same when orchestrated. Pass an empty stdin as part of the
task to work around this.

We didn't encounter the issue in our test jobs, because we avoid
sending notifications by passing newlist a --quiet option which
skips that step, and thus the problematic prompting behavior we
observed in production deployment.

Change-Id: I345bda61802f93a52386b7d3057163e30f0e1b65
2021-08-02 15:04:41 -07:00

40 lines
1.5 KiB
YAML

# 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:
cmd: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
stdin: ''
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:
cmd: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
stdin: ''
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