2

シェフにとってまったく新しい...以前はppaリポジトリからelasticsearchをインストールしていましたが、attributes/default.rbのバージョン番号を変更するたびに、最初からビルドしたいと思います(リポジトリはもう更新されていません)。

現在、gz ファイルをプルダウンして解凍し、適切な場所にリンクするだけの bash ブロックがありますが、chef-solo を実行するたびに実行されないようにする方法がわかりません。

助言がありますか?

4

1 に答える 1

3

内部にバージョンを含むテキスト ファイルを作成します。ロジックは単純です。

  • ファイルが存在しない場合: 解凍します。
  • ファイルが存在し、バージョン ( で確認IO.read(filename)) が異なる場合: 解凍します。
  • ファイルが存在し、バージョンが同じ場合: 何もしません。

デフォルトでは、ファイルを作成するリソースにはaction :nothingunzip があり、通知されます。この方法では、バージョンが同じ場合に unzip が実行されないだけでなく、バ​​ージョン ファイルもそのまま残ります。

ロジックを説明するための疑似コード:

unzip "resource_name" do
  not_if { ::File.exists?( filename ) and node[:version]==IO.read( filename ).strip }
  notifies :create, "file[#{filename}]"
end

file filename do
  action :nothing
  content node[:version]
end
于 2013-02-01T22:53:43.410 に答える