如何使用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
我尝试使用以下命令search可能会显示主要版本的任何其他事实
facter |grep 6
有operatingsystemmajrelease
% 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
注意:您至less需要Facter 1.7才能使operatingsystemmajrelease 。 Facter 1.6的核心事实是相当有限的。
我猜你正在尝试根据安装版本做出某种决定。
你可以在你的逻辑中使用正则expression式。
所以像这样:
case $operatingsystemrelease { /^6.*/: { //do 6.x stuff } /^5.*/: { //do 5.x stuff } }
或者如果是更多你的风格:
if $operatingsystemrelease =~ /^6.*/ { //do 6.x stuff } elsif $operatingsystemrelease =~ /^5.*/ { // do 5.x stuff }
请记住,所有要素事实都可以在全局范围variables中用于您的清单。
如果你有一个混合的环境,你可能会想要包装的东西,如:
if $operatingsystem == "CentOS" { }