ChefでJavaをインストール

[root@srv001 chef-repo]# cd ~/chef-repo
# レシピを作成する。
[root@srv001 chef-repo]# knife cookbook create java -o site-cookbooks
# 今回はDownloadしたパッケージからインストールを実施する。
# Downloadしたパッケージをレシピの所定のディレクトリ(files)に保存する。
[root@srv001 chef-repo]# mv ~/jdk-7u51-linux-x64.rpm site-cookbooks/java/files/default/
# ファイルを転送するために実行する。
[root@srv001 chef-repo]# knife solo prepare root@localhost

パッケージ名やインストールディレクトリなどを変数定義する。

[root@srv001 chef-repo]# vi site-cookbooks/java/attributes/default.rb
# java package name
default['java']['package_name'] = "jdk-7u51-linux-x64.rpm"
# java src
default['java']['src']  = "/usr/local/src/"
# java version
default['java']['ver']  = ""
# java home
default['java']['home'] = "/usr/local/java/"

レシピを作成する。

[root@srv001 chef-repo]# vi site-cookbooks/java/recipes/default.rb 
# ファイルを所定の場所に配置する。
cookbook_file "#{node['java']['src']}#{node['java']['package_name']}" do
  source "#{node['java']['package_name']}"
  mode 0744
end
# javaをRPMでインストールする。
package "java" do
  action :install
  source "#{node['java']['src']}#{node['java']['package_name']}"
  provider Chef::Provider::Package::Rpm
#  options "--prefix=#{node['java']['home']}"
end

レシピを実行する。

# run_listに追加する。
[root@srv001 chef-repo]# vi nodes/localhost.json
[root@srv001 chef-repo]# knife solo cook root@localhost -i ~/.chef/s3test.pem -o java