Provisioner

ChefでOracle Javaをバイナリインストール

投稿日:2014/06/09 更新日:

コミュニティークックブックにJavaのクックブックがあるのですが、今回はこれを使わずに独自でOracle Javaをインストールするレシピを書いてみました。
なんというか、大人の事情でJavaのインストールする場所や、ディレクトリ構成までガチガチにきまっているような場合向けです。
初めて書いたレシピなので色々不備やバージョンアップする時どうするという根本的な問題はあるかもしれませんが、最初のインストールだけはできます。
また、各プラットフォームについては考慮しておりません。

インストールするディレクトリ構成

Javaのホームディレクトリ:/usr/java
Javaのバージョン:1.7.0_60
Javaの本体ファイル名:jdk-7u60-linux-x64.tar.gz
インストールディレクトリ名:jdk1.7.0_60
インストールディレクトリ:/usr/java/jdk1.7.0_60
シンボリックリンク名:/usr/java/jdk
となるようにレシピを書きました。基本的には/usr/java/jdkのシンボリックリンクをJAVA_HOMEとして利用します。

attributes/default.rbの設定

今回は、バージョン情報やインストールディレクトリ名をAttributesで管理してレシピ内で利用したいと思います。

default['java']['java_dir']         = '/usr/java'
default['java']['version']          = '1.7.0_60'
default['java']['archive_name']     = 'jdk-7u60-linux-x64.tar.gz'
default['java']['install_dir_name'] = 'jdk1.7.0_60'
default['java']['install_java_dir'] = node['java']['java_dir'] + "/" + default['java']['install_dir_name']
default['java']['symlink_java_dir'] = node['java']['java_dir'] + '/jdk'

キー値の名前がダサいのはご愛嬌で・・・。
こんな書き方で大丈夫なのかな。

recipe/default.rbの設定

cookbook_file "#{Chef::Config[:file_cache_path]}/#{node['java']['archive_name']}" do
    mode 00644
end

directory node['java']['java_dir'] do
    owner "root"
    group "root"
    mode  "0755"
    action :create
end

bash "install java" do
    code <<-EOF
        cd #{Chef::Config[:file_cache_path]}
        tar zxf #{node['java']['archive_name']} -C #{node['java']['java_dir']}
    EOF
    creates node['java']['install_java_dir']
end

link node['java']['symlink_java_dir'] do
    to node['java']['install_java_dir']
end

template "/etc/profile.d/jdk.sh" do
    source "jdk.sh.erb"
    owner "root"
    group "root"
    mode 0644
end

ゴリゴリっていう感じです。

recipe/default/jdk.sh.erbの設定

export JAVA_HOME=<%= node['java']['symlink_java_dir'] %>
export PATH=$PATH:$JAVA_HOME/bin

実行

knife solo cook サーバ名でうまくインストールされるとjava -versionでバージョン表示されると思います。
ChefもそうですがVagrantとの組み合わせは本当に便利ですねー。

vagrant destory -f

で削除して、

vagrant up
knife solo bootstrap サーバ名

で同じ環境が準備されるのは本当に衝撃的です。
ただ、それなりのレシピを書くにはそれなりのレシピを見てしっかりと読まないといけないと思います。
本番運用用のレシピはまだ書けないのですが簡単な開発環境をセットアップするレシピを書くくらいはできそう。
ちなみに、WindowsでChefとVagrantを実行しているのですが今のところ順調です。

-Provisioner
-

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

ChefでTomcatをインストールする(パッケージインストール)

Chef実践入門を第三章まで読み進めました。 2章は実際にChefを動かしてみてどういうものかとりあえず触ってみる章でしたが、3章はRecipeの書き方など2章で書いて動いていた部分を詳細に説明する章 …

Chef実践入門を買ってみた

昨年くらいからChefやDevOpsという言葉をよく耳にする機会があって、Chefはすごい便利そうだなーと色々なホームページを見て自分の環境に導入してみたが実際の業務に使えるというほど深く触れなかった …

ChefでBerksを実行してOracle Javaをインストール

Chefでは、自分でレシピを書く以外でもコミュニティクックブックを利用することができるみたいです。 Apacheはもちろんかなりたくさんのクックブックがあり、Javaもありました。 というわけで、この …

ChefでTomcatをバイナリインストールする(とりあえず動いた編)

先日の記事に引き続き、ChefでTomcatをバイナリインストールする練習です。 取り急ぎ、先日の記事でなんとなくのレシピの骨子になるようなものを書きました。 今回は、具体的にレシピを書いて行ってとり …

AnsibleでZabbixSever3.0の環境を構築する

最近、何のブログかわからなくなってきておりますが、久々のAnsibleネタです。 AnsibleでZabbixServer3.0を構築するPlaybookを書きました。 playbook-zabbix …