CentOS7ではPuppet2系が動かない

なぜなら標準で提供されてるパッケージのRubyが2.0以上になっているため。CentOS7はPuppetは3系しか動作しない。

以下、標準・Puppetlabsリポジトリを使ったパッケージによるインストールした場合についてです、gemの場合とかは知らない。色々ごちゃごちゃといじっていたので他のCentOSのバージョンとの整理も兼ねて。

CentOS5, CentOS6はPuppetlabsのyumリポジトリを利用することでPuppet 2系も3系も動く。ただしCentOS5の場合はディストリ標準パッケージのRubyが1.8.5の為、PuppetlabsのdependenciesによってRubyが1.8.7にアップグレードされることに注意。

つまり既存にCentOS5,6混在の環境があって、新たにCentOS7を追加しようとした場合は

  • 早々に既存マニフェストをPuppet 3.X readyにマイグレーションして
  • 既存環境のPuppetも3.Xにアップグレード

していった方が良い。2.Xのサポートもいつまで続くか分からないし。

既存環境にCentOS4があった場合は…サポートも切れてるし知らない子ですね…

マニフェストの互換性は0.2Xから2.6はほぼ問題無いけれども(2.7も大丈夫なはず)、2.Xから3.Xはちょこちょこエラーになる部分もあるんで頑張って直す。

Release Noteをみて変更点だけ直せば大概OKだけれど、他ハマりどころとしては、Puppetと同じタイミングでバージョンアップされるFacter 2.X でObsoluteな記載方法がある為、自作facter変数を修正しないといけないかもしれないというところ。

Facter.add(:servertype) do
    setcode do
 -    Facter.hostname.gsub(/\d+$/ , "")
 +    Facter.value(:hostname).gsub(/\d+$/ , "")
    end
  end