Puppet&Facter – 如何确定是否运行Cent 6或Cent 5

如何使用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" { }