Eu gosto de osfamily
. O LSB muitas vezes não é instalado por padrão e em algumas distros como o RHEL / CentOS a cadeia de dependências para lsb_release
é enorme. Além disso, se você não conhece a distro, como você sabe o nome do pacote LSB? operatingsystem
é irritante porque eu geralmente não me importo se é RedHat vs. CentOS, ou Debian versus Ubuntu. Eu quero conhecer as famílias distro porque as idiossincrasias entre as distros são geralmente as mesmas dentro das famílias.
O suporte do Gentoo foi mesclado no osfamily ontem (13 de fevereiro de 2013), ele deve fazer o próximo lançamento. Você sempre pode usar uma combinação de osfamily
para verificar o Debian ou RedHat e operatingsystem
para verificar o Gentoo.
osfamily
e operatingsystem
são basicamente apenas um monte de if
ou case
condições. Seria muito fácil personalizar o seu como um fato personalizado ou um parâmetro de classe com base nas suas necessidades. Como:
class osfacts {
if $::kernel == 'Linux' {
$os = $::operatingsystem ? {
Gentoo => 'Gentoo',
default => $::osfamily,
}
}
elsif $::kernel == 'SunOS' {
$os = $::operatingsystem
}
elsif ($::operatingsystem == 'Darwin') and
($::macosx_productname == 'Mac OS X') {
$os = 'MacOSX'
}
else {
$os = $::operatingsystem
}
}