-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi folks,

currently I do manage all my systems with ansible and former puppet.

But no system that I tested had a version that detect devuan a clean
way.

I first started with distributing a /usr/share/distro-info/devuan.csv
with content of:
   version,codename,series,created,release,eol
   8,Jessie,jessie,2013-05-04,2015-04-25
   9,Ascii,ascii,2015-04-25
   ,Ceres,ceres,1993-08-16

... but I think, that file should be included in distro-info-data.

But there is more. With current ansible I get the following
(distribution specific) facts on a debian sid:
        "ansible_distribution": "Debian",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Debian",
        "ansible_distribution_major_version": "buster/sid",
        "ansible_distribution_release": "NA",
        "ansible_distribution_version": "buster/sid",
        "ansible_lsb": {
            "codename": "sid",
            "description": "Debian GNU/Linux unstable (sid)",
            "id": "Debian",
            "major_release": "unstable",
            "release": "unstable"
        },
        "ansible_os_family": "Debian",

A devuan unstable gives me the following:
        "ansible_distribution": "Devuan GNU/Linux",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "NA",
        "ansible_distribution_major_version": "stretch/sid",
        "ansible_distribution_release": "NA",
        "ansible_distribution_version": "stretch/sid",
        "ansible_lsb": {
            "codename": "ceres",
            "description": "Devuan GNU/Linux unstable (ceres)",
            "id": "Devuan",
            "major_release": "unstable",
            "release": "unstable"
        },
        "ansible_os_family": "Devuan GNU/Linux",

And a devuan stable gives me the following:
        "ansible_distribution": "Debian",
        "ansible_distribution_major_version": "8",
        "ansible_distribution_release": "NA",
        "ansible_distribution_version": "8.7",
        "ansible_lsb": {
            "codename": "jessie",
            "description": "Devuan GNU/Linux 1.0 (jessie)",
            "id": "Devuan",
            "major_release": "1",
            "release": "1.0"
        },
        "ansible_os_family": "Debian",

That makes several problems.

First, for every system the ansible_os_family should be Debian as it is
for all .deb based distributions. And even worse, it should never be
something with space.

Next, the ansible_distribution* stuff should have some reasonable
values. First ansible_distribution sould be "Devuan",
ansible_distribution_file_variety should be "Debian",
ansible_distribution_major_version should be the numeric major or NA
(for unstable), ansible_distribution_release should be the name of the
distribution and ansible_distribution_version should be the version with
minor version.

I did some patching of
/usr/lib/python2.7/dist-packages/ansible/module_utils/facts/system/distribution.py
(see below) to get the following:
        "ansible_distribution": "Devuan",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Debian",
        "ansible_distribution_major_version": "ascii/ceres",
        "ansible_distribution_release": "ascii/ceres",
        "ansible_distribution_version": "ascii/ceres",
        "ansible_lsb": {
            "codename": "ceres",
            "description": "Devuan GNU/Linux unstable (ceres)",
            "id": "Devuan",
            "major_release": "unstable",
            "release": "unstable"
        },
        "ansible_os_family": "Debian",

As I am a perl hacker and not a python hacker, the patch might be not
the best and there is many room for improvement:
   --- distribution.py.orig        2017-12-10 15:11:55.389637887 +0100
   +++ distribution.py     2017-12-10 15:36:22.463056530 +0100
   @@ -310,6 +310,18 @@
                        rc, out, err = self.module.run_command(cmd)
                        if rc == 0:
                            debian_facts['distribution_release'] = out.strip()
   +        elif 'Devuan' in data:
   +            debian_facts['distribution'] = 'Devuan'
   +            release1 = re.search("PRETTY_NAME=.* ([0-9]+) \(([^)]+)\)", 
data)
   +            release2 = re.search("PRETTY_NAME=.* ([^ \"]+)\"", data)
   +            if release1:
   +                debian_facts['distribution_release'] = release1.groups()[1]
   +                debian_facts['distribution_major_version'] = 
release1.groups()[0]
   +                debian_facts['distribution_version'] = release1.groups()[0]
   +            elif release2:
   +                debian_facts['distribution_release'] = release2.groups()[0]
   +                debian_facts['distribution_major_version'] = 
release2.groups()[0]
   +                debian_facts['distribution_version'] = release2.groups()[0]
            elif 'Ubuntu' in data:
                debian_facts['distribution'] = 'Ubuntu'
                # nothing else to do, Ubuntu gets correct info from python 
functions
   @@ -411,7 +423,7 @@
                                    'Ascendos', 'CloudLinux', 'PSBM', 
'OracleLinux', 'OVS',
                                    'OEL', 'Amazon', 'Virtuozzo', 'XenServer'],
                         'Debian': ['Debian', 'Ubuntu', 'Raspbian', 'Neon', 
'KDE neon',
   -                                'Linux Mint'],
   +                                'Linux Mint', 'Devuan'],
                         'Suse': ['SuSE', 'SLES', 'SLED', 'openSUSE', 'openSUSE 
Tumbleweed',
                                  'SLES_SAP', 'SUSE_LINUX', 'openSUSE Leap'],
                         'Archlinux': ['Archlinux', 'Antergos', 'Manjaro'],

Do you see a better way to do the stuff? Best would be to use the lsb
stuff but that is only available when lsb-release is installed.

Regards
   Klaus
- -- 
Klaus Ethgen                                       http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16            Klaus Ethgen <kl...@ethgen.ch>
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Comment: Charset: ISO-8859-1

iQGzBAEBCgAdFiEEMWF28vh4/UMJJLQEpnwKsYAZ9qwFAlotT4oACgkQpnwKsYAZ
9qytqQwAnwIaOrPDUygVPOBT3ntQbwLoDyi2848XjORbQtdAKQJ1RzDl5Potyd07
MuZOQMjU8S5GGwwR2NFA+fKEA1v6x3hwnE/WXL+tsvxt5qtjQ12h0oAfDon1tkj/
P/E++JPu0KB1Ci+f/QNr7u0nO8yAtnE18ReK/a7NRlCJYJKheJ6t/HCy7J3mLQxh
l2n4+Ytkt2RFzO3DwupT8W8u6x5VPCyq5LY+DBGVngoWPRksejjoMbC1plyOfoHx
jO/evv9H+Dvv/VjGDQu1RtmpikyJ2E/1KrHrsXjFL7XBrxzvk/2jqTknz6UFT184
fR3yH3uZMRdJPvO/e7o+PiwS3EuFYKdSfXgOE8AFNQVseThUj12LLDY1rnac3fmd
YGYbOvMldqc501xl1m5xY06CkkyeGNB/BXRsJeOI/gHX3ulyoK3Ec6BdKgNZjG/b
e//6Bi2dYX0TaarYvjzIHCeU9QlRV5Qbt7G02BUdENzT9JX5LDzS/Icwmo1jxaki
+aST6tEL
=auWh
-----END PGP SIGNATURE-----
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to