シェフにとってまったく新しい...以前はppaリポジトリからelasticsearchをインストールしていましたが、attributes/default.rbのバージョン番号を変更するたびに、最初からビルドしたいと思います(リポジトリはもう更新されていません)。
現在、gz ファイルをプルダウンして解凍し、適切な場所にリンクするだけの bash ブロックがありますが、chef-solo を実行するたびに実行されないようにする方法がわかりません。
助言がありますか?
シェフにとってまったく新しい...以前はppaリポジトリからelasticsearchをインストールしていましたが、attributes/default.rbのバージョン番号を変更するたびに、最初からビルドしたいと思います(リポジトリはもう更新されていません)。
現在、gz ファイルをプルダウンして解凍し、適切な場所にリンクするだけの bash ブロックがありますが、chef-solo を実行するたびに実行されないようにする方法がわかりません。
助言がありますか?
内部にバージョンを含むテキスト ファイルを作成します。ロジックは単純です。
IO.read(filename)
) が異なる場合: 解凍します。デフォルトでは、ファイルを作成するリソースにはaction :nothing
unzip があり、通知されます。この方法では、バージョンが同じ場合に 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