この記事のサマリ
vagrant up
したら、jdk1.7系を自動的にダウンロードして、そのままjavaが使える環境が出来上がります。
対象読者
java(7系)のsandbox環境が欲しい方
動作確認バージョン
vagrant version
Installed Version: 1.7.4
経緯
さくっと利用できるjavaのsandbox環境が欲しかったので。
Oracleのjdkをインストールさせる
javaで開発している場合は、自動的にjdkをインストールしたいことがあると思います。ただ、yumなどを利用して実行すると、デフォルトの設定では自動的にopen-jdkがインストールされてしまいます。しかしながら、実際の開発ではoracleが提供するjdkを利用したいというケースは多いのではないでしょうか?ここでは、wgetでoracleのjdkを取得し、vagrant up
を実行した際に、oracleから取得したjdkを自動的にインストールするようなサンプルを紹介いたします。
puppetやchefのようなツールは利用せず、一番シンプルなshellによるprovisioningを行っています。
Vagrant::Config.run do |config|
config.vm.box = "centos64_6_5"
config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"
config.vm.provision "shell", path: "setup_jdk7.sh"
end
#!/bin/bash
BASE_DIR="/vagrant"
RPM_DIR="${BASE_DIR}/rpm"
JDK_VERSION=7u80
BUILD_NO=b15
JAVA_RPM_NAME="jdk-${JDK_VERSION}-linux-x64.rpm"
JDK_DOWNLOAD_URL="http://download.oracle.com/otn-pub/java/jdk/${JDK_VERSION}-${BUILD_NO}/${JAVA_RPM_NAME}"
# create dir
if [ ! -d ${RPM_DIR} ]
then
mkdir -p ${RPM_DIR}
else
echo "${RPM_DIR} Is Already Exists So Need Not Create"
fi
# if "rpm for jdk file" is noting
if [ ! -f ${RPM_DIR}/${JAVA_RPM_NAME} ]
then
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ${JDK_DOWNLOAD_URL} -O /tmp/${JAVA_RPM_NAME}
mv /tmp/${JAVA_RPM_NAME} ${RPM_DIR}/
else
echo "${JAVA_RPM_NAME} Is Already Exists So Need Not Wget"
fi
# install jdk
sudo rpm -ivh ${RPM_DIR}/${JAVA_RPM_NAME}
上記shellでは、まだjdkのrpmファイルをダウンロードしていなかったらwgetによりoracleからjdkのインストール用rpmをダウンロードし、あったら既にダウンロード済みのjdkのインストール用rpmを使うようにしています。
jdkのバージョンを変更したい場合は、wgetで該当バージョンを取得するためのコマンドを調べていただき、wgetしているコマンドの組み立て部分を見直していただければそのまま利用できるかと思います。