2017-02-27 4 views
0

私がやろうとしているのは、サービスが実行中であればファイルに書き込みたい、そうでなければ実行しないでください。シェフのif文でsupportsステートメントを使用することは可能ですか?

service 'McAfeeFramework' do 
puts 'true' 
only_if{ supports :status =>true} 

File.write('c:\chef-repo\n1.txt','running') 
puts 'false' 
only_if{ supports :status =>false} 
File.write('c:\chef-repo\n1.txt','not running') 
end 
+0

「サポート」プロパティは、あなたが定義したもので、サービスのステータスを示すものではありません。サービス状態をファイルに書き込むための 'powershell_script'リソースが最適です(しかし、なぜそれをしたいのですか?) – Tensibai

+0

なぜこれをしたいのですか?これは、シェフがどのように最もうまくいくかとは非常に反対です。 – coderanger

答えて

0

service resourceを間違って使用しようとしています。

service resourceは、システムのサービスの有効化、無効化、開始または停止などの管理に使用できます。使用しているguards(only_if、not_if)は、特定の状況下でのみリソースアクションをトリガーするためのものです。たとえば、別のサービスが実行されている場合にのみサービスを開始します。

ここで達成したいタスクについては、powershell_script resourceを使用する必要があります。そこでは、各シェフクライアントの実行時にプロビジョニングされたノードで実行される実際のコードを書き込んで、ファイルを書き込みます。

=編集=

coderangerが述べたように、あなたがそれではなく、PSにコンテンツを追加するためにルビーのロジックを作成する必要がありますが、それは、このためにfileリソースを使用することも可能です。

+1

これは 'file'リソースを使っても間違いなく、PSではなくRubyでロジックを書くことを意味します。 – coderanger

関連する問題