2017-08-06 3 views
1

私はWindowsマシン上でJDK 8をインストールwindows_packageリソースを持っており、それは次のようになります。シェフのwindows_packageガードは存在しますか?

java_source="C:\\chef_solo\\utils\\jdk-8u121-windows-x64.exe" 
package_name="Java(TM) SE Development Kit 8 (64-bit)" 
windows_package package_name do 
    source java_source 
    action :install 
    installer_type :custom 
    options "/s #{additional_options}" 
end 

問題は、すべてのシェフの実行が、それは同じJDKをインストールして、第二のインストール後に、javaはないということですもう働いている。

私はwindows_packageガードを探していましたが、何も見つかりませんでした。それは存在しないからです。

とにかく、私はjavaが存在するかどうかをチェックするpowershellソリューションを見つけました。私は何とか私のwindows_packageインストールのガードとしてそれらを使用できるかどうかを知る必要があります。

ソリューションはここにある: How to get the Java version in PowerShell

答えて

2

ガード条項は、すべてのリソースで利用可能なコア機能であるため、見つけるためwindows_packageに固有のものはありません。 Chefドキュメントにはnot_ifonly_ifguard_interpreterの詳細情報があります。

1

ので、@coderangerのアイデア以下、最終的な結果は、このいずれかになります。

windows_package package_name do 
    source java_source 
    action :install 
    installer_type :custom 
    options "/s #{additional_options}" 
    guard_interpreter :powershell_script 
    only_if "!(dir 'HKLM:\\SOFTWARE\\JavaSoft\\Java Runtime Environment' | select -expa pschildname -Last 1)" 
end 

あなたがよりよい解決策を持っている場合は、私に知らせてください。

ありがとうございます。

関連する問題