Puppet & Facter – how to determine if running Cent 6 or Cent 5

awkfacterpuppet

How would you use facter and puppet to determine if the OS is running Cent 6.x or Cent 5.x ?

facter operatingsystemrelease 
6.4

I only care about the major release (6)

I've thought about using awk, but there must be a better way that is more 'puppet manifest' friendly.

   #This works, but is ugly trying to use this in a puppet manifest

facter operatingsystemrelease |awk -F. '{print $1}'
6

Update:

It looks like the newer versions of facter have some additional information about major releases that isn't in my version. My initial provisioning needs to assume that facter is out of date.

facter --version
1.6.4
puppet --version
2.7.20

I've tried searching for any additional facts that might show the major release, with the following command

facter |grep 6

Best Answer

There is operatingsystemmajrelease

% facter operatingsystemmajrelease
6

If you have redhat-lsb-core package installed, facter will get as well the family of lsb-provided facts (which includes lsbmajdistrelease):

% facter |grep ^lsb
lsbdistcodename => Final
lsbdistdescription => CentOS release 6.4 (Final)
lsbdistid => CentOS
lsbdistrelease => 6.4
lsbmajdistrelease => 6
lsbrelease => :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch

NOTE: You need at least Facter 1.7 in order have operatingsystemmajrelease. Core facts in Facter 1.6 are quite limited.