0

サーバーで puppet を介して syslog-ng を構成しています。構成ファイルは、バージョン 2.x、3.1、および 3.3 の間で大きく異なります。私のホストでは、オペレーティング システム (centos5、centos6、debian 7、ubuntu) によって、利用可能な syslog-ng のバージョンが異なります。

syslog-ng の構成を正しいバージョンに適合させるための 2 つのアイデアがありました。

  • カスタム ファクト : インストールされている syslog-ng のバージョンをテストするためのカスタム ファクトを簡単に作成できます。しかし、syslog-ng がまだインストールされていない場合、この事実は役に立ちません。
  • マニフェストの条件: オペレーティング システムが提供する syslog-ng のバージョンを決定する「ケース」をマニフェストで定義するのは少し見苦しいと思います。

私にとって、これを行う最もクリーンな方法は、インストール前にオペレーティング システムでどのバージョンのパッケージを利用できるかをテストすることです。ファクトリならできますが、少し難しいと思います。

私の問題を解決する人形のような方法はありますか?

4

2 に答える 2

1

この問題を解決するための操り人形的な方法が実際にあります。

と組み合わせ$::osfamily$::operatingsystemrelease、マニフェストで次のようなことを行うことができます。

case $::osfamily {
  'CentOS': { 
    case $::operatingsystemrelease {
       /^6/: { include syslog-ng::centos6 }
       /^5/: { include syslog-ng::centos5 }
       default: { notice("This operating system release for CentOs '${::operatingsystemrelease}' is not supported.")
    }
   }
   default:  { notice "Unsupported osfamily ${::osfamily}" }
}
于 2013-08-29T16:15:17.790 に答える