From 62813f72a530a689966d361da3abe4dd2712ba99 Mon Sep 17 00:00:00 2001 From: Christian Berendt Date: Mon, 28 Oct 2013 13:22:19 +0100 Subject: [PATCH] added module to enable/disable Apache2 modules This module uses a2enmod or a2dismod to enable or disable Apache2 modules. --- web_infrastructure/apache2_module | 97 +++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 web_infrastructure/apache2_module diff --git a/web_infrastructure/apache2_module b/web_infrastructure/apache2_module new file mode 100644 index 00000000000..66058fcb641 --- /dev/null +++ b/web_infrastructure/apache2_module @@ -0,0 +1,97 @@ +#!/usr/bin/python +#coding: utf-8 -*- + +# (c) 2013, Christian Berendt +# +# This module is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this software. If not, see . + +# this is magic, see lib/ansible/module.params['common.py +#<> + +DOCUMENTATION = ''' +--- +module: apache2_module +short_description: enables/disables a module of the Apache2 webserver +description: + - Enables or disables a specified module of the Apache2 webserver. +options: + name: + description: + - name of the module to enable/disable + required: true + state: + description: + - indicate the desired state of the resource + choices: ['present', 'absent'] + default: present + +''' + +EXAMPLES = ''' +# enables the Apache2 module "wsgi" +- apache2_module: state=present name=wsgi + +# disables the Apache2 module "wsgi" +- apache2_module: state=absent name wsgi +''' + +def _module_is_enabled(module): + name = module.params['name'] + result, stdout, stderr = module.run_command("a2enmod -q %s" % name) + return result == 0 + +def _module_is_disabled(module): + return _module_is_enabled(module) == False + +def _disable_module(module): + name = module.params['name'] + + if _module_is_disabled(module): + module.exit_json(changed = False, result = "Success") + + result, stdout, stderr = module.run_command("a2dismod %s" % name) + if result != 0: + module.fail_json(msg="Failed to disable module %s: %s" % (name, stdout)) + + module.exit_json(changed = True, result = "Disabled") + +def _enable_module(module): + name = module.params['name'] + + if _module_is_enabled(module): + module.exit_json(changed = False, result = "Success") + + result, stdout, stderr = module.run_command("a2enmod %s" % name) + if result != 0: + module.fail_json(msg="Failed to enable module %s: %s" % (name, stdout)) + + module.exit_json(changed = True, result = "Enabled") + +def main(): + module = AnsibleModule( + argument_spec = dict( + name = dict(required=True), + state = dict(default='present', choices=['absent', 'present']) + ), + ) + + if module.params['state'] == 'present': + _enable_module(module) + + if module.params['state'] == 'absent': + _disable_module(module) + +# this is magic, see lib/ansible/module.params['common.py +#<> +main()