1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

apache2_module generates false/misleading warning (#5793)

* Add parameter warn_mpm_module to control when warning are raised

* Remoe whitespace

* Add changelog fragment

* Add missing license

* Update changelogs/fragments/5793-apache2-module-npm-warnings.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/apache2_module.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/apache2_module.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update tests/integration/targets/apache2_module/tasks/635-apache2-misleading-warning.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Refining integration test - previous was invalid

* False to false

* refactor assertion for suse

* Revert "refactor assertion for suse"

This reverts commit 61b86e7493.

* Excluding test on Suse

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Cédric Servais 2023-01-14 18:37:33 +01:00 committed by GitHub
parent 3985ade3fc
commit 756c0776d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 79 additions and 5 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- apache2_module - add module argument ``warn_mpm_absent`` to control whether warning are raised in some edge cases (https://github.com/ansible-collections/community.general/pull/5793).

View file

@ -49,6 +49,12 @@ options:
- Ignore configuration checks about inconsistent module configuration. Especially for mpm_* modules. - Ignore configuration checks about inconsistent module configuration. Especially for mpm_* modules.
type: bool type: bool
default: false default: false
warn_mpm_absent:
description:
- Control the behavior of the warning process for MPM modules.
type: bool
default: true
version_added: 6.3.0
requirements: ["a2enmod","a2dismod"] requirements: ["a2enmod","a2dismod"]
notes: notes:
- This does not work on RedHat-based distributions. It does work on Debian- and SuSE-based distributions. - This does not work on RedHat-based distributions. It does work on Debian- and SuSE-based distributions.
@ -78,6 +84,18 @@ EXAMPLES = '''
name: mpm_worker name: mpm_worker
ignore_configcheck: true ignore_configcheck: true
- name: Disable mpm_event, enable mpm_prefork and ignore warnings about missing mpm module
community.general.apache2_module:
name: "{{ item.module }}"
state: "{{ item.state }}"
warn_mpm_absent: false
ignore_configcheck: true
loop:
- module: mpm_event
state: absent
- module: mpm_prefork
state: present
- name: Enable dump_io module, which is identified as dumpio_module inside apache2 - name: Enable dump_io module, which is identified as dumpio_module inside apache2
community.general.apache2_module: community.general.apache2_module:
state: present state: present
@ -140,6 +158,7 @@ def _module_is_enabled(module):
error_msg = "Error executing %s: %s" % (control_binary, stderr) error_msg = "Error executing %s: %s" % (control_binary, stderr)
if module.params['ignore_configcheck']: if module.params['ignore_configcheck']:
if 'AH00534' in stderr and 'mpm_' in module.params['name']: if 'AH00534' in stderr and 'mpm_' in module.params['name']:
if module.params['warn_mpm_absent']:
module.warnings.append( module.warnings.append(
"No MPM module loaded! apache2 reload AND other module actions" "No MPM module loaded! apache2 reload AND other module actions"
" will fail if no MPM module is loaded immediately." " will fail if no MPM module is loaded immediately."
@ -249,6 +268,7 @@ def main():
force=dict(type='bool', default=False), force=dict(type='bool', default=False),
state=dict(default='present', choices=['absent', 'present']), state=dict(default='present', choices=['absent', 'present']),
ignore_configcheck=dict(type='bool', default=False), ignore_configcheck=dict(type='bool', default=False),
warn_mpm_absent=dict(type='bool', default=True),
), ),
supports_check_mode=True, supports_check_mode=True,
) )

View file

@ -0,0 +1,47 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# This test represent the misleading behavior of the following issue: https://github.com/ansible-collections/community.general/issues/635
- name: Disable MPM event module
apache2_module:
name: "{{ item.module}}"
state: "{{ item.state}}"
ignore_configcheck: true
register: disable_mpm_modules
with_items:
- { module: mpm_event, state: absent }
- { module: mpm_prefork, state: present }
- assert:
that:
- "'warnings' in disable_mpm_modules"
- disable_mpm_modules["warnings"] == [
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately.",
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately."
]
- name: Enable MPM event module - Revert previous change
apache2_module:
name: "{{ item.module}}"
state: "{{ item.state}}"
ignore_configcheck: true
register: disable_mpm_modules
with_items:
- { module: mpm_prefork, state: absent }
- { module: mpm_event, state: present }
- name: Disable MPM event module
apache2_module:
name: "{{ item.module}}"
state: "{{ item.state}}"
ignore_configcheck: true
warn_mpm_absent: false
register: disable_mpm_modules
with_items:
- { module: mpm_event, state: absent }
- { module: mpm_prefork, state: present }
- assert:
that:
- "'warnings' not in disable_mpm_modules"

View file

@ -180,7 +180,7 @@
- mpm_worker - mpm_worker
- mpm_event - mpm_event
- mpm_prefork - mpm_prefork
ignore_errors: yes ignore_errors: true
register: remove_with_configcheck register: remove_with_configcheck
- name: ensure configcheck fails task with when run without mpm modules - name: ensure configcheck fails task with when run without mpm modules

View file

@ -45,3 +45,8 @@
that: modules_before.stdout == modules_after.stdout that: modules_before.stdout == modules_after.stdout
when: ansible_os_family in ['Debian', 'Suse'] when: ansible_os_family in ['Debian', 'Suse']
# centos/RHEL does not have a2enmod/a2dismod # centos/RHEL does not have a2enmod/a2dismod
- name: include misleading warning test
include: 635-apache2-misleading-warning.yml
when: ansible_os_family in ['Debian']
# Suse has mpm_event module compiled within the base apache2