diff --git a/defaults/main.yml b/defaults/main.yml index 6085b67..807ba94 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -17,3 +17,6 @@ mailman: session_timeout: 3600 archiver: key: "{{ lookup('password', '/dev/null length=128') }}" + list_defaults: + settings: {} + lists: {} diff --git a/library/mailman_list.py b/library/mailman_list.py index 310fac1..d8e72a2 100644 --- a/library/mailman_list.py +++ b/library/mailman_list.py @@ -45,7 +45,10 @@ def run_module(): ml = domain.create_list(addr_local) ml_settings = ml.settings - result['diff']['before'] = dict(ml_settings) + if result['changed']: + result['diff']['before'] = None + else: + result['diff']['before'] = dict(ml_settings) for i in module.params['settings']: if ml_settings[i] != module.params['settings'][i]: diff --git a/tasks/list.yml b/tasks/list.yml new file mode 100644 index 0000000..380ae12 --- /dev/null +++ b/tasks/list.yml @@ -0,0 +1,10 @@ +- set_fact: + current_list: "{{ {}|combine(mailman.list_defaults, {'name': listname}, mailman.lists[listname], recursive=True) }}" + +- name: "setup mailing list ( {{ current_list.name }} )" + mailman_list: + api_url: "http://{{ mailman.api.hostname }}:{{ mailman.api.port }}/{{ mailman.api.version }}" + api_user: "{{ mailman.api.admin.name }}" + api_password: "{{ mailman.api.admin.pw }}" + name: "{{ current_list.name }}" + settings: "{{ current_list.settings }}" diff --git a/tasks/main.yml b/tasks/main.yml index 8bbe3da..570aea9 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -53,3 +53,9 @@ - name: flush handlers to get mailman ready meta: flush_handlers + +- name: setup mailing lists + include_tasks: list.yml + loop: "{{ mailman.lists.keys()|list }}" + loop_control: + loop_var: listname