From bf81097a85420123d32275a8b82411f227b269ba Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Mon, 2 Aug 2021 20:49:19 +0000 Subject: [PATCH] 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 --- playbooks/roles/mailman-list/tasks/main.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/playbooks/roles/mailman-list/tasks/main.yaml b/playbooks/roles/mailman-list/tasks/main.yaml index e6361fb39e..1662324f67 100644 --- a/playbooks/roles/mailman-list/tasks/main.yaml +++ b/playbooks/roles/mailman-list/tasks/main.yaml @@ -14,7 +14,9 @@ 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 }}" + 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: @@ -27,7 +29,9 @@ 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 }}" + 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"