Chefに次のことを実行させようとしています:
- 目的の debian (実際には任意のパッケージである可能性があります) が利用可能かどうかを確認します
- そうであれば、パッケージをapt-getインストールします
- そうでない場合は、ソースを使用してパッケージをビルドします
私はあなたができることを知っています:
remote_file "some remote file" do
...
not_if "apt-cache search 'mypackage'"
end
しかし、私は試しました:
ruby_block "Attempting to install #{node[:bact][:application_name]}" do
block do
cmd = Chef::ShellOut.new("apt-get install -y --force-yes #{node[:bact][:application_name]}")
exec_result = cmd.run_command
if exec_result.exitstatus != 0
Chef::Log.info 'Go grab some coffee, this might be a while....'
resources("execute[install-#{node[:bact][:application_name]}-via-pip]").run_action(:run)
end
end
action :create
end
これを行うためのより簡単で醜くない方法はありますか?
基本的に、私が理想的にやりたいことは次のとおりです。
begin
package 'some-package-name' do
action :install
done
rescue Chef::Exception
# Do something here
end