Open1
Puppetの operatingsystem とかがない時の対応法
古いPuppetマニフェストを使っていると、よく $::operatingsystem
みたいなことが書かれている。
これは facter から取得したOSの情報などをPuppetが変数として格納してくれる機能なのだが、この書き方はlegacy factsと呼ばれており、Puppet 8からは参照できなくなっている。
普通ならモダンな書き方である structured facts を使うべきである。例えば、以下は等価である。
$::operatingsystem == $facts['os']['name']
だが、何らかの事情で書き方を変更できない場合もあるだろう。そのようなときは include_legacy_facts=true
という設定を使うとよい[1] 。 puppet.conf などのファイルを用意し、以下のように書く。
[main]
include_legacy_facts=true
puppet apply -t ./puppet.conf
のようにすれば、legacy factsのままpuppet applyできる。
legacy factsのようなものをlintするには puppet-lint[2] が使える。