123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- # (c) 2015, Tobias Florek <tob@butter.sh>
- # Licensed under the terms of the MIT License
- """
- An ansible module to query the RPM database. For use, when yum/dnf are not
- available.
- """
- # pylint: disable=redefined-builtin,wildcard-import,unused-wildcard-import
- from ansible.module_utils.basic import * # noqa: F403
- DOCUMENTATION = """
- ---
- module: rpm_q
- short_description: Query the RPM database
- author: Tobias Florek
- options:
- name:
- description:
- - The name of the package to query
- required: true
- state:
- description:
- - Whether the package is supposed to be installed or not
- choices: [present, absent]
- default: present
- """
- EXAMPLES = """
- - rpm_q: name=ansible state=present
- - rpm_q: name=ansible state=absent
- """
- RPM_BINARY = '/bin/rpm'
- def main():
- """
- Checks rpm -q for the named package and returns the installed packages
- or None if not installed.
- """
- module = AnsibleModule( # noqa: F405
- argument_spec=dict(
- name=dict(required=True),
- state=dict(default='present', choices=['present', 'absent'])
- ),
- supports_check_mode=True
- )
- name = module.params['name']
- state = module.params['state']
- # pylint: disable=invalid-name
- rc, out, err = module.run_command([RPM_BINARY, '-q', name])
- installed = out.rstrip('\n').split('\n')
- if rc != 0:
- if state == 'present':
- module.fail_json(msg="%s is not installed" % name, stdout=out, stderr=err, rc=rc)
- else:
- module.exit_json(changed=False)
- elif state == 'present':
- module.exit_json(changed=False, installed_versions=installed)
- else:
- module.fail_json(msg="%s is installed", installed_versions=installed)
- if __name__ == '__main__':
- main()
|