「さくっとvagrant upでJavaEEアプリ動かせたらいいなー」
という電波をキャッチしたので作ってみました。

作ってみましたと言っても、Chefのコミュニティcookbookを持ってきて使うようにしただけですが :)

 

以下、使い方です。

 

CentOS6のBoxファイルを準備

まず、CentOS6のBoxファイルを準備してください。

Boxファイルを持ってない人は @hnakamur2 さんがPackerテンプレートを公開してくださってるので、
PackerとこのテンプレートでBoxファイルを作ってください。

OSXでpackerでCentOS6.4のVirtualBox VMを作成する

GitHub hnakamur/my-packer-template-files

僕はCentOS6.5用のテンプレートでBoxファイルを作りました。

 

vagrant box add

名前はcentos6.5にしておいてください
変えたい場合は、この後git cloneするVagrantfileの config.vm.box と合わせてください

vagrant box add centos6.5 /path/to/boxfile

 

vagrnatとプラグインをインストール

vagrant-omnibusはBoxファイルにChefがインストールされているのならインストール不要です。
vagrant-berkshelfは2.0.1以上をインストールしてください。

vagrant-berkshelfは既にオワコンらしいのですが、
vagrant upするだけでコミュニティcookbookを取ってきてプロビジョニングしたい場合、
今のところ他に選択肢がないのかなと思います。

vagrant plugin install vagrant-omnibus
vagrant plugin install vagrant-berkshelf --plugin-version ">= 2.0.1"

Windowsをお使いの場合は以下も参照してください。

vagrant-berkshelf 2.0.1がwindows 7 64bitでインストール出来ない問題とその解決法

 

Vagrantのファイル一式を入手

以下のページに必要なファイルを置いてますので、 git cloneなどで取ってきてください。

matsumana/vagrant-wildfly

 

Vagrantfileの内容を適宜修正

Vagrantfileにポートフォワーディングされるホスト側のポート番号、メモリやCPUの割り当てを書いています。
必要であれば、自分の環境に合わせて修正してください。

config.vm.network :forwarded_port, guest: 8080, host: 18080
config.vm.network :forwarded_port, guest: 9990, host: 19990
config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id, "--memory", "2048"]
  vb.customize ["modifyvm", :id, "--cpus",   "2"]
end

 

インストールするJavaを変更する

OpenJDK7やOracle Java7で動かしたい場合はVagrantfileの設定を変更してください。

      :java => {
        # OpenJDK7
#        :install_flavor => "openjdk",
#        :jdk_version    => "7",

        # Oracle Java7
#        :install_flavor => "oracle",
#        :jdk_version    => "7",
#        :oracle         => {:accept_oracle_download_terms => true}

        # Oracle Java8
        :install_flavor => "oracle",
        :jdk_version    => "8",
        :oracle         => {:accept_oracle_download_terms => true}
      }

 

使用しているコミュニティcookbook

Berksfileを見るとわかりますが、以下のコミュニティcookbookを使用しています。

  • java
  • wildfly

ただし、opscodeのサイトにアップされているcookbookは少し古いので、
インストールされるソフトが古かったり、自動起動がうまく動かなかったりしました。
GitHubのリポジトリを参照するようにしています。

また、vagrant-berkshelfを使っている関係上、自作のcookbookのパスをBerkfileに定義しました。

source 'https://api.berkshelf.com'

cookbook "java",    git: "git@github.com:socrata-cookbooks/java.git"
cookbook "wildfly", git: "git@github.com:bdwyertech/chef-wildfly.git"
cookbook 'base',    path: "site-cookbooks/base"

※注意
Windowsを使ってる人は、コマンドラインのgitをインストールし、GitHubへのssh鍵認証が通る状態にしてください。
それが出来ていない場合は、vgrant up時にコミュニティcookbookの取得が出来ずにエラーになります。

 

vagrant up

vagrant upすると仮想マシンが起動して、JavaとWildFlyのインストールのインストールまで自動で行われます。

ブラウザでWildFlyの管理コンソール(http://localhost:19990) にアクセスすると管理画面が開くと思います。

user: wildfly
password: wildfly

 

以上です。開発する時や、勉強会などで使うと便利かも知れません。
みなさん、良いJavaEE7生活をお送りください!