Как бы вы использовали facter и puppet, чтобы определить, работает ли ОС Cent 6.x или Cent 5.x?
facter operatingsystemrelease
6.4
Меня волнует только основной выпуск (6)
Я думал об использовании awk, но должен быть лучший способ, более дружественный к «марионеточному манифесту».
#This works, but is ugly trying to use this in a puppet manifest
facter operatingsystemrelease |awk -F. '{print $1}'
6
Обновить:
Похоже, что в более новых версиях facter есть дополнительная информация об основных выпусках, которой нет в моей версии. Моя первоначальная подготовка должна предполагать, что фактер устарел.
facter --version
1.6.4
puppet --version
2.7.20
Я попытался найти какие-либо дополнительные факты, которые могут указывать на основной выпуск, с помощью следующей команды
facter |grep 6
Там есть операционная система
% facter operatingsystemmajrelease
6
Если у вас установлен пакет redhat-lsb-core, facter также получит семейство предоставленных lsb фактов (которое включает 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
НОТА: Вам нужно как минимум Facter 1.7 для того, чтобы иметь operatingsystemmajrelease
. Основные факты в Facter 1.6 довольно ограничены.
Я предполагаю, что вы пытаетесь принять какое-то решение, основываясь на версии установки.
Вы можете использовать в своей логике регулярные выражения.
Так что-то вроде:
case $operatingsystemrelease {
/^6.*/: {
//do 6.x stuff
}
/^5.*/: {
//do 5.x stuff
}
}
или если if
больше твой стиль:
if $operatingsystemrelease =~ /^6.*/ {
//do 6.x stuff
}
elsif $operatingsystemrelease =~ /^5.*/ {
// do 5.x stuff
}
Помните, что все факты факторов доступны в глобальных переменных области видимости ваших манифестов.
Если у вас смешанная среда, вы, вероятно, захотите обернуть это примерно так:
if $operatingsystem == "CentOS" {
}