diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index 064b5e1292..a2adfc19da 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -97,6 +97,7 @@ class Facts(object): # For the most part, we assume that platform.dist() will tell the truth. # This is the fallback to handle unknowns or exceptions OSDIST_LIST = ( ('/etc/oracle-release', 'OracleLinux'), + ('/etc/slackware-version', 'Slackware'), ('/etc/redhat-release', 'RedHat'), ('/etc/vmware-release', 'VMwareESX'), ('/etc/openwrt_release', 'OpenWrt'), @@ -255,7 +256,7 @@ class Facts(object): RedHat = 'RedHat', Fedora = 'RedHat', CentOS = 'RedHat', Scientific = 'RedHat', SLC = 'RedHat', Ascendos = 'RedHat', CloudLinux = 'RedHat', PSBM = 'RedHat', OracleLinux = 'RedHat', OVS = 'RedHat', OEL = 'RedHat', Amazon = 'RedHat', - XenServer = 'RedHat', Ubuntu = 'Debian', Debian = 'Debian', Raspbian = 'Debian', SLES = 'Suse', + XenServer = 'RedHat', Ubuntu = 'Debian', Debian = 'Debian', Raspbian = 'Debian', Slackware = 'Slackware', SLES = 'Suse', SLED = 'Suse', openSUSE = 'Suse', SuSE = 'Suse', Gentoo = 'Gentoo', Funtoo = 'Gentoo', Archlinux = 'Archlinux', Mandriva = 'Mandrake', Mandrake = 'Mandrake', Solaris = 'Solaris', Nexenta = 'Solaris', OmniOS = 'Solaris', OpenIndiana = 'Solaris', @@ -314,6 +315,21 @@ class Facts(object): # Once we determine the value is one of these distros # we trust the values are always correct break + elif name == 'Archlinux': + data = get_file_content(path) + if 'Arch Linux' in data: + self.facts['distribution'] = name + else: + self.facts['distribution'] = data.split()[0] + break + elif name == 'Slackware': + data = get_file_content(path) + if 'Slackware' in data: + self.facts['distribution'] = name + version = re.findall('\w+[.]\w+', data) + if version: + self.facts['distribution_version'] = version[0] + break elif name == 'OracleLinux': data = get_file_content(path) if 'Oracle Linux' in data: