Oracle版JDKをchef-soloを使ってセットアップする方法
chef-soloを使ってOracle版Javaのセットアップしようとしても、
Oracleのサイトから利用規約に合意して、
JDKをダウンロードという手順を踏む必要があるので、
そのままでは、自動化することが出来ません。
そこで、以下の2つの方法を考えました、
①社内用のyumリポジトリを用意して、ダウンロードしたJDKのrpmを配置
社内用yumリポジトリからchefでセットアップする
②chefのcookbookの中に、ダウンロードしたJDKのrpmを配置
cookbookの中のrpmを使ってセットアップする
①の方法が素直ですが、
小規模な場合は社内用yumリポジトリを作るのも面倒なので、
ここでは②の方法でOracle版JDKをセットアップします。
rpmが含まれていないOracle版JDK用セットアップ用のcookbookを、
githubに作ったので、これをcloneして作業を進めます。
https://github.com/takemikami/chef-oraclejdk
Knife Soloのインストール
管理用のマシンで、
以下のコマンドから、Knife Soloの作業用ディレクトリを作成します。
$ mkdir ~/jdksetup
作業用ディレクトリに以下ファイルを作成します。
Gemfile
source 'https://rubygems.org'
gem 'chef'
gem 'knife-solo'
以下のコマンドで、KnifeSoloをインストールします。
$ bundle install --path=vendor/bundle
以下のコマンドで、knifeのディレクトリ構成を作成します。
$ bundle exec knife solo init .
ここまでで、以下のような構成になります。
+ Gemfile
+ Gemfile.lock
+ cookbooks
+ data_bags
+ environments
+ nodes
+ roles
+ site-cookbooks
+ vendor
Oracle版JDK用セットアップ用のcookbookの作成
以下のサイトからJavaSDKをダウンロードします。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
ファイル名:jdk-7u25-linux-x64.rpm (Linux x64の場合)
以下のコマンドで、
Oracle版JDK用セットアップ用のcookbook雛形をcloneする。
$ cd ~/jdksetup/cookbooks
$ git clone git@github.com:takemikami/chef-oraclejdk.git oraclejdk
ダウンロードしたrpmを、
「~/jdksetup/cookbooks/oraclejdk/files/default/」以下にコピーする。
Oracle版JDKセットアップ用のcookbookを適用
knife-soloで接続できるCentOSの環境が用意されているとして、
以下のコマンドで、knifeの環境を準備します。
$ cd ~/jdksetup/
$ bundle exec knife solo prepare <接続先マシン名>
次のファイルに適用時の設定(JDKのバージョン)を追記します。
nodes/<接続先マシン名>.json
{
"run_list":["recipe[oraclejdk]"],
"default_attributes": {
"oraclejdk": {
"version": "7u25"
}
}
}
以下のコマンドで、knifeでcookbookを適用をします。
$ bundle exec knife solo cook <接続先マシン名>
セットアップ確認
以下のコマンドで、
JDKをセットアップしたマシンに、JDKがセットアップされている事を確認します。
$ ssh <接続先マシン名>
$ java -version
ここまででOracle版JDKのセットアップは完了です。
この手順で作成した(rpmが含まれた)「oraclejdk」を、
社内のgitリポジトリなどにおいて管理しておけば、
以後、Oracle版JDKが必要なマシンをchefでセットアップするのが楽になると思います。