2017-08-04 2 views
0

私は戦争をしていますが、その内容(一部のファイル)はクライアントに適用する前に変更する必要があります。だから、私がやったのは、クライアントに解凍されたファイルをコピーし、ファイルを変更して、そのディレクトリをクライアント上で再度圧縮することです。すべてが動作しますが、それらの操作の後、私はきれいにしたい(圧縮されていないファイルの一時ディレクトリを削除する)。人形のディレクトリを管理する

file { 'temp-dir' 
path => 'temp', 
ensure => directory, 
... 
} 

人形は私がマニフェストの終わりにこれを行うことができるようにdoesntの:

File ['temp-dir'] { 
    ensure => absent, 
    ... 
    } 

は、だから私は何か間違ったことをやっている、またはそれは操り人形では不可能だ?まず私はこのようなリソースを宣言するため、

答えて

2

ファイルリソースを使用したパペットDSLでは不可能ですが、実行する方法はまだあります。

あなたがマニフェストに書く場合:

file { '/tmp/mytemp': 
    ensure => directory, 
} 
-> 
exec { 'do something': } 
-> 
file { '/tmp/mytemp': 
    ensure => absent, 
} 

人形は、二つの異なる、互換性のないエンド状態の宣言として2つのファイルのリソースを解釈し、エラーをスローします。

パペットは宣言型言語であり、一連のステップを指定する言語ではありません。

あなたはいくつかの選択肢があります。

puppet-archiveモジュールは、クリーンアップをサポートしている特定のユースケース用に設計された拡張機能を提供するため、おそらく最もよく考えられます。

もう1つの選択肢は、一時ファイルをまったくクリーンアップしないことです。通常、それらをきれいにする必要はありません。

もう1つの選択肢は、独自のインストールを処理するためにRubyに独自のcustom types and providersを書き込むことです。

最後に、execを使用して手順全体を管理することができます。

exec { 'install war': 
    command => 'wget ... -o /tmp/war.tmp ; ... ; rm -f /tmp/war.tmp', 
    path => '/bin', 
} 
+0

これは完全にこの問題を回避し、前方別のパスが 'template'機能を使用するか、単一で変更されたファイルを適用する前に、機能自分自身を書くことで、彼が選んだの往路で複数の宣言を回避しながら'file'リソースです。残念ながら、私たちは、そのルートについて助言する質問には十分な情報がありません。 –

関連する問題