#!/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 . 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'] a2enmod_binary = module.get_bin_path("a2enmod") result, stdout, stderr = module.run_command("%s -q %s" % (a2enmod_binary, 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") a2enmod_binary = module.get_bin_path("a2enmod") result, stdout, stderr = module.run_command("%s %s" % (a2enmod_binary, 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()