blob: 347fe7f05afaaf9572344ce0311c9efd3c261d2d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# Fact: operatingsystemrelease
#
# Purpose: Returns the release of the operating system.
#
# Resolution:
# On RedHat derivatives, returns their '/etc/<variant>-release' file.
# On Debian, returns '/etc/debian_version'.
# On Ubuntu, parses '/etc/issue' for the release version.
# On Suse, derivatives, parses '/etc/SuSE-release' for a selection of version
# information.
# On Slackware, parses '/etc/slackware-version'.
#
# On all remaining systems, returns the 'kernelrelease' value.
#
# Caveats:
#
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{CentOS Fedora oel ovs RedHat MeeGo}
setcode do
case Facter.value(:operatingsystem)
when "CentOS", "RedHat"
releasefile = "/etc/redhat-release"
when "Fedora"
releasefile = "/etc/fedora-release"
when "MeeGo"
releasefile = "/etc/meego-release"
when "OEL", "oel"
releasefile = "/etc/enterprise-release"
when "OVS", "ovs"
releasefile = "/etc/ovs-release"
end
File::open(releasefile, "r") do |f|
line = f.readline.chomp
if line =~ /\(Rawhide\)$/
"Rawhide"
elsif line =~ /release (\d[\d.]*)/
$1
end
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Debian}
setcode do
release = Facter::Util::Resolution.exec('cat /etc/debian_version')
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Ubuntu}
setcode do
release = Facter::Util::Resolution.exec('cat /etc/issue')
if release =~ /Ubuntu (\d+.\d+)/
$1
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{SLES SLED OpenSuSE}
setcode do
releasefile = Facter::Util::Resolution.exec('cat /etc/SuSE-release')
if releasefile =~ /^VERSION\s*=\s*(\d+)/
releasemajor = $1
if releasefile =~ /^PATCHLEVEL\s*=\s*(\d+)/
releaseminor = $1
elsif releasefile =~ /^VERSION\s=.*.(\d+)/
releaseminor = $1
else
releaseminor = "0"
end
releasemajor + "." + releaseminor
else
"unknown"
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Slackware}
setcode do
release = Facter::Util::Resolution.exec('cat /etc/slackware-version')
if release =~ /Slackware ([0-9.]+)/
$1
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Bluewhite64}
setcode do
releasefile = Facter::Util::Resolution.exec('cat /etc/bluewhite64-version')
if releasefile =~ /^\s*\w+\s+(\d+)\.(\d+)/
$1 + "." + $2
else
"unknown"
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{VMwareESX}
setcode do
release = Facter::Util::Resolution.exec('vmware -v')
if release =~ /VMware ESX .*?(\d.*)/
$1
end
end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Slamd64}
setcode do
releasefile = Facter::Util::Resolution.exec('cat /etc/slamd64-version')
if releasefile =~ /^\s*\w+\s+(\d+)\.(\d+)/
$1 + "." + $2
else
"unknown"
end
end
end
Facter.add(:operatingsystemrelease) do
setcode do Facter[:kernelrelease].value end
end
|