0

次のリソース定義があります

 file { '/usr/lib/oozie/libext/hadoop-lzo-0.5.0.jar':
      ensure  => present,
      group   => 'root', 
      owner   => 'root', 
      source  => '/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar',
      mode    => 0755,
      require => [Package['lzo'],Package['lzo-devel'],Package['hadoop-lzo'],Package['hadoop-lzo-native']],
    }

基本的に、jar アーティファクトを目的の場所にコピーします。ここでの問題は、これらのパッケージの 1 つをインストールすることによって作成された場所を指すソース定義です。puppet を noop モードで実行すると、そのようなソースがないため、このリソース定義は失敗します。これは非常に論理的です。

この動作を変更する方法はありますか? すべての依存関係をスキップしたくありません。または、そうするために提案された方法は何ですか?jar をモジュール ファイルにコピーすることは避けたいと思います。

noop metaparameter, documentation hereを見つけましたが、それも役に立たないようです。したがって、リソース仕様は次のようになります。

file { '/usr/lib/oozie/libext/hadoop-lzo-0.5.0.jar':
      ensure  => present,
      group   => 'root', 
      owner   => 'root', 
      source  => '/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar',
      mode    => 0755,
      noop    => false,
      require => [Package['lzo'],Package['lzo-devel'],Package['hadoop-lzo'],Package['hadoop-lzo-native']],
    }

何かをオンにする必要がありますか?それとも私は何かを誤解していますか?モジュールが noop モードで実行されていることを検出するにはどうすればよいですか? 厄介な修正をしたい場合。if noop then skip のようなもの

ありがとう

4

1 に答える 1

0

$clientnoopクライアントが noop モードで実行されている場合は true になり、それ以外の場合は false になります。

$clientnoopそれが最善の解決策かどうかはわかりませんが、が true の場合は別のリソースを含めることができます。「noop リソース」は、ソースを除いて、同じパラメーターを持つファイル リソースである可能性があります。このようにして、このファイルに依存する他のリソースを引き続き適用できます。

于 2014-07-08T11:16:31.417 に答える