Puppet 利用 versioncmp 對兩個版本比對

2017-08-16 Puppet

最近在寫 puppet agent 的 module,為了要支援 Puppet 5 無痛升級,所以用到了 versioncmp 這個 function。

 

versioncmp 的用法是用兩個版本做比對,然後 return 1/0/-1 的值做判斷

$result = versioncmp(a, b)

 

判斷方式:

1 if version a is greater than version b
0 if the versions are equal
-1 if version a is less than version b

 

先講應用情境:

主要是 puppet-agent 的 3-4 和 5 的版本會需要不同的 repository,所以必須在 5.0.0 這個版本界線做判斷

 

以 Ubuntu 16.04 為例:

  • puppet5:https://apt.puppetlabs.com/puppet5-release-xenial.deb
  • puppet4:https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb

 

如果我想要 5.0.0 開始的版本給予 $puppet5 的話可以這樣寫

$puppet5 = 'https://apt.puppetlabs.com/puppet5-release-xenial.deb'
$puppet4 = 'https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb'

if versioncmp($puppet_version, '5.0.0') >= 0 {
  $repo = $puppet5
}
else {
  $repo = $puppet4
}

 

就可以直接拿 $repo 繼續往下做了 …

 

 

 

 

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱