Update scan facts to include the service scanner which was inexplicably

missing, update scan_packages to match the footprint of
scan_services (makes searching easier)
This commit is contained in:
Matthew Jones
2015-05-05 14:46:28 -04:00
parent 1bd2c99171
commit 2e040e9de3
2 changed files with 42 additions and 7 deletions

View File

@@ -4,6 +4,7 @@
scan_use_recursive: false scan_use_recursive: false
tasks: tasks:
- scan_packages: - scan_packages:
- scan_services:
- scan_files: - scan_files:
path: '{{ scan_file_path }}' path: '{{ scan_file_path }}'
get_checksum: '{{ scan_use_checksum }}' get_checksum: '{{ scan_use_checksum }}'

View File

@@ -3,10 +3,47 @@
import os import os
from ansible.module_utils.basic import * # noqa from ansible.module_utils.basic import * # noqa
DOCUMENTATION = '''
---
module: scan_packages
short_description: Return installed packages information as fact data
description:
- Return information about installed packages as fact data
version_added: "1.9"
options:
requirements: [ ]
author: Matthew Jones
'''
EXAMPLES = '''
# Example fact output:
# host | success >> {
# "ansible_facts": {
# "services": [
# {
# "source": "apt",
# "version": "1.0.6-5",
# "architecture": "amd64",
# "name": "libbz2-1.0"
# },
# {
# "source": "apt",
# "version": "2.7.1-4ubuntu1",
# "architecture": "amd64",
# "name": "patch"
# },
# {
# "source": "apt",
# "version": "4.8.2-19ubuntu1",
# "architecture": "amd64",
# "name": "gcc-4.8-base"
# }, ... ] } }
'''
def rpm_package_list(): def rpm_package_list():
import rpm import rpm
trans_set = rpm.TransactionSet() trans_set = rpm.TransactionSet()
installed_packages = {} installed_packages = []
for package in trans_set.dbMatch(): for package in trans_set.dbMatch():
package_details = dict(name=package[rpm.RPMTAG_NAME], package_details = dict(name=package[rpm.RPMTAG_NAME],
version=package[rpm.RPMTAG_VERSION], version=package[rpm.RPMTAG_VERSION],
@@ -14,16 +51,13 @@ def rpm_package_list():
epoch=package[rpm.RPMTAG_EPOCH], epoch=package[rpm.RPMTAG_EPOCH],
arch=package[rpm.RPMTAG_ARCH], arch=package[rpm.RPMTAG_ARCH],
source='rpm') source='rpm')
if package['name'] not in installed_packages: installed_packages.append(package_details)
installed_packages[package['name']] = [package_details]
else:
installed_packages[package['name']].append(package_details)
return installed_packages return installed_packages
def deb_package_list(): def deb_package_list():
import apt import apt
apt_cache = apt.Cache() apt_cache = apt.Cache()
installed_packages = {} installed_packages = []
apt_installed_packages = [pk for pk in apt_cache.keys() if apt_cache[pk].is_installed] apt_installed_packages = [pk for pk in apt_cache.keys() if apt_cache[pk].is_installed]
for package in apt_installed_packages: for package in apt_installed_packages:
ac_pkg = apt_cache[package].installed ac_pkg = apt_cache[package].installed
@@ -31,7 +65,7 @@ def deb_package_list():
version=ac_pkg.version, version=ac_pkg.version,
architecture=ac_pkg.architecture, architecture=ac_pkg.architecture,
source='apt') source='apt')
installed_packages[package] = [package_details] installed_packages.append(package_details)
return installed_packages return installed_packages
def main(): def main():