Browse Source

Ansible 1.4 has blacklist and modprobe now

Matthias Vogelgesang 10 years ago
parent
commit
c8e0885fb7
2 changed files with 0 additions and 235 deletions
  1. 0 136
      library/blacklist
  2. 0 99
      library/modprobe

+ 0 - 136
library/blacklist

@@ -1,136 +0,0 @@
-#!/usr/bin/env python2
-#coding: utf-8 -*-
-
-# 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 <http://www.gnu.org/licenses/>.
-
-import os
-import re
-
-
-DOCUMENTATION = '''
----
-module: blacklist
-short_description: Blacklist kernel modules
-requirements: []
-version_added: 1.4
-description:
-    - Add or remove kernel modules from blacklist.
-options:
-    name:
-        required: true
-        description:
-            - Name of kernel module to black- or whitelist.
-    state:
-        required: false
-        default: "present"
-        choices: [ present, absent ]
-        description:
-            - Whether the module should be present in the blacklist or absent.
-    blacklist_file:
-        required: false
-        description:
-            - If specified, use this blacklist file instead of
-              C(/etc/modprobe.d/blacklist-ansible.conf).
-        default: null
-'''
-
-EXAMPLES = '''
-# Blacklist the nouveau driver module
-- blacklist: name=nouveau state=present
-'''
-
-
-class Blacklist(object):
-    def __init__(self, module, filename):
-        if not os.path.exists(filename):
-            open(filename, 'a').close()
-
-        self.filename = filename
-        self.module = module
-
-    def get_pattern(self):
-        return '^blacklist\s*' + self.module + '$'
-
-    def readlines(self):
-        f = open(self.filename, 'r')
-        lines = f.readlines()
-        f.close()
-        return lines
-
-    def module_listed(self):
-        lines = self.readlines()
-        pattern = self.get_pattern()
-
-        for line in lines:
-            stripped = line.strip()
-            if stripped.startswith('#'):
-                continue
-
-            if re.match(pattern, stripped):
-                return True
-
-        return False
-
-    def remove_module(self):
-        lines = self.readlines()
-        pattern = self.get_pattern()
-
-        f = open(self.filename, 'w')
-
-        for line in lines:
-            if not re.match(pattern, line.strip()):
-                f.write(line)
-
-        f.close()
-
-    def add_module(self):
-        f = open(self.filename, 'a')
-        f.write('blacklist %s\n' % self.module)
-
-
-def main():
-    module = AnsibleModule(
-        argument_spec=dict(
-            name=dict(required=True),
-            state=dict(required=False, choices=['present', 'absent'],
-                       default='present'),
-            blacklist_file=dict(required=False, default=None)
-        ),
-        supports_check_mode=False,
-    )
-
-    args = dict(changed=False, failed=False,
-                name=module.params['name'], state=module.params['state'])
-
-    filename = '/etc/modprobe.d/blacklist-ansible.conf'
-
-    if module.params['blacklist_file']:
-        filename = module.params['blacklist_file']
-
-    blacklist = Blacklist(args['name'], filename)
-
-    if blacklist.module_listed():
-        if args['state'] == 'absent':
-            blacklist.remove_module()
-            args['changed'] = True
-    else:
-        if args['state'] == 'present':
-            blacklist.add_module()
-            args['changed'] = True
-
-    module.exit_json(**args)
-
-# this is magic, see lib/ansible/module_common.py
-#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
-main()

+ 0 - 99
library/modprobe

@@ -1,99 +0,0 @@
-#!/usr/bin/env python2
-#coding: utf-8 -*-
-
-# 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 <http://www.gnu.org/licenses/>.
-
-
-DOCUMENTATION = '''
----
-module: modprobe
-short_description: Add or remove kernel modules
-requirements: []
-version_added: 1.4
-description:
-    - Add or remove kernel modules.
-options:
-    name:
-        required: true
-        description:
-            - Name of kernel module to manage.
-    state:
-        required: false
-        default: "present"
-        choices: [ present, absent ]
-        description:
-            - Whether the module should be present or absent.
-'''
-
-EXAMPLES = '''
-# Add the 802.1q module
-- modprobe: name=8021q state=present
-'''
-
-def main():
-    module = AnsibleModule(
-        argument_spec={
-            'name': {'required': True},
-            'state': {'default': 'present', 'choices': ['present', 'absent']},
-        },
-        supports_check_mode=True,
-    )
-    args = {
-        'changed': False,
-        'failed': False,
-        'name': module.params['name'],
-        'state': module.params['state'],
-    }
-
-    # Check if module is present
-    try:
-        modules = open('/proc/modules')
-        present = False
-        for line in modules:
-            if line.startswith(args['name'] + ' '):
-                present = True
-                break
-        modules.close()
-    except IOError, e:
-        module.fail_json(msg=str(e), **args)
-
-    # Check only; don't modify
-    if module.check_mode:
-        if args['state'] == 'present' and not present:
-            changed = True
-        elif args['state'] == 'absent' and present:
-            changed = True
-        else:
-            changed = False
-        module.exit_json(changed=changed)
-
-    # Add/remove module as needed
-    if args['state'] == 'present':
-        if not present:
-            rc, _, err = module.run_command(['modprobe', args['name']])
-            if rc != 0:
-                module.fail_json(msg=err, **args)
-            args['changed'] = True
-    elif args['state'] == 'absent':
-        if present:
-            rc, _, err = module.run_command(['rmmod', args['name']])
-            if rc != 0:
-                module.fail_json(msg=err, **args)
-            args['changed'] = True
-
-    module.exit_json(**args)
-
-# this is magic, see lib/ansible/module_common.py
-#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
-main()