2012-01-26 12 views
1

私はアプリケーションの料理レシピを使用してjava warファイルを展開しています。私がしたいのは、外部ロケーション(この場合は私たちのローカルネクサスリポジトリ)からWAR md5をロードすることです。シェフで外部の場所から値をロードするには(ある種のbashを実行して、STDOUTに文字列を出力し、その値をシェフ変数に使用するなど)。このbashのような外部呼び出しでシェフ変数を設定する

何か:

export CHEF_VARIABLE = `wget -O - $/URL/WHICH/RETURNS/TEXT/STRING` 

答えて

1

使用Rubyのオープン-URI。たとえば、私はVirtualBoxをインストールするために使う料理本でこれを行います。 VirtualBoxのダウンロードサイトには、チェックサム(sha256sum)付きのテキストファイルがあります。

require 'open-uri' 

sha256sum = "" # retrieve the sha256sums from the virtualbox mirror 
open("#{node['virtualbox']['urlbase']}/SHA256SUMS").each do |line| 
    sha256sum = line.split(" ")[0] if line =~ /#{distfile}/ 
end 

source on githubでレシピ全体を表示できます。アプリケーションの料理レシピのレシピ以外のレシピの属性として、その値をノードの実行リストの前に設定することになります。

+0

ありがとう、これは完全に動作します。誰かがnexusから最新のSNAPSHOTを入手しようと思っている場合は、http://mvn.myrepo.com/service/local/artifact/maven/redirect?g=$groupid&a=$artifact&v=LATEST&r=snapshots&p=war md5はhttp://mvn.myrepo.com/service/local/artifact/maven/redirect?g=$groupid&a=$artifact&v=LATEST&r=snapshots&p=war.md5です – David