Windows版Vagrant+Chef SoloでCentOS 6.5上にjava7+tomcat7環境を作る

| 1件のフィードバック

Vagrantによる仮想環境作成について調べる機会があったので備忘的にメモ。

作成する環境は以下。

  • ホストOS(Windows7)
    • Vagrant 1.6.2
    • VirtualBox 4.3.1
  • ゲストOS(CentOS 6.5)
    • jdk 7
    • Tomcat 7

ゲストOS上での操作は一切行わず、Vagrant+Chef Solo連携で環境構築を実行します。

実作業は10~20分程度で終わりますが、ダウンロード・インストール時間はそれなりにかかります。

Vagrant・VirtualBoxのインストール

以下のサイトからWindowsインストーラをそれぞれダウンロードします。

Vagrant

VirtualBox

インストールウィザードで特に注意する点はありません。Vagrantインストール後は再起動が必要になりますのでご注意を。

OSイメージ(Box)の選択

以下のURLに、Vagrantで利用できるOSイメージ(Box)の一覧があります。

http://www.vagrantbox.es/

今回はCentOS 6.5 x86_64を使います。該当行の[Copy]ボタンをクリックすると、ダウンロードURLがクリップボードにコピーされます。

VagrantFileの作成

以下のコマンドで、カレントディレクトリにVagrantFileが作成されます。このVagrantFileにVMの構成情報を記述していくことになります。

 vagrant init centos65 http://xxxxx

“centos65″ の部分は任意のBox名です。

URL部分には、前節でコピーしたBoxのURLを入力します。

VagrantFileの編集

VagrantFileを編集し、Chef Soloのインストール設定とChefで利用するCookbookの設定を行います。

Chef Soloインストール設定

vagrant-omnibusプラグインをインストールすることで、自動でVM環境にChef Soloをインストールすることができます。

以下のコマンドでプラグインをインストールします。

vagrant plugin install vagrant-omnibus

VagrantFileをエディタで編集し、以下を追記します。最終行 “end” 手前あたりで良いかと。

config.omnibus.chef_version = :latest

これでVMリロード時にChef最新版が自動でインストールされるようになります。

Cookbookの調達と設定

Chefまわりの設定を行います。今回使用するCookbookは以下です。すべてGithubに上がっています。

Java
https://github.com/socrata-cookbooks/java

Tomcat
https://github.com/bryanwb/chef-tomcat

ark
https://github.com/opscode-cookbooks/ark

logrotate
https://github.com/stevendanna/logrotate

それぞれcloneを行い、以下のフォルダに配置します(フォルダは作成してください)。gitクライアントがない場合は、zipでダウンロードすればOKです。

<VagrantFileの存在するディレクトリ>/my-recipes/cookbooks

それぞれのレシピのフォルダは”java”、”tomcat”、”ark”、”logrotate” にリネームしてください。

続いてVagrantFileを編集します。89行目あたりの以下のブロックのコメントアウトを外します。

config.vm.provision "chef_solo" do |chef|
  chef.cookbooks_path = "../my-recipes/cookbooks"
  chef.roles_path = "../my-recipes/roles"
  chef.data_bags_path = "../my-recipes/data_bags"
  chef.add_recipe "mysql"
  chef.add_role "web"
  
  # You may also specify custom JSON attributes:
  chef.json = { :mysql_password => "foo" }
end

このブロックにChef Soloの設定を記述します。

デフォルトの不要な記述を削除し、JavaとTomcatの設定を記述します。chef.cookbooks_pathも、上述の手順で作成したディレクトリに変更します。

config.vm.provision "chef_solo" do |chef|
  chef.cookbooks_path = "./my-recipes/cookbooks"
  chef.add_recipe "java"
  chef.add_recipe "tomcat"
  # You may also specify custom JSON attributes:
  chef.json = {
    :java => {
      :jdk_version => 7,
      :install_flavor => 'openjdk'
    },
    :tomcat => {
      :version => '7'
    }
  }
end

chef.jsonには各レシピに渡すパラメータを記述します。javaはopenjdkのバージョン7、Tomcatのバージョン7を指定しています。

設定パラメータに関しては、各CookbookのReadMeに記載されています。

ポートフォワーディング設定

ポートフォワーディング設定を行い、ホスト側のポート48080で、VM上のTomcatポート8080にアクセスできるようしておきます。

VagrantFileに以下を追記します。23行目あたりに記入例があるので、そのあたりに。

config.vm.network "forwarded_port", guest: 8080, host: 48080

VMを作成・起動する

以下のコマンドで、VagrantFileの定義内容を反映したVMの作成・起動を行います。

vagrant up

定義内容に従ってインストール処理が走ります。

待つ

ひたすら待ちます。OSのインストールから始まるので長いです。回線の状況にもよるかもですが1~2時間はかかります。

OSイメージはローカルパスを参照させることもできるらしいので、あらかじめ落としておいたほうが良いかも。

Tomcatの確認

起動を確認したら、ブラウザから以下のアドレスにアクセスします。

http://localhost:48080

Tomcatのインデックスページが表示されれば成功です。無事Java+Tomcatがインストールされました。

VMへのアクセス

起動後はsshクライアントでログインできます。ポートはデフォルトで2222、ID/PASSはvagrant/vagrantです。

VMのシャットダウン

以下のコマンドでVMをシャットダウンすることができます。

vagrant halt

VMの起動は vagrant up で行います。初回以降インストールは 走らないのでご安心を。

その他補足等

  • Vagrant日本語ドキュメント http://lab.raqda.com/vagrant/index.html
  • arkとlogrotateはtomcatが依存しているcookbook
  • 検証で何度も環境を戻すため、vagrant-vbox-snapshotプラグインを利用した
  • opscodeのtomcat cookbookではTomcat7が入らなかった(未対応ぽい)
  • 今回は出来合いのものをかき集めて動作させただけなので、次はinfoScoopのCookbookでも作って動作させてみる

Windows版Vagrant+Chef SoloでCentOS 6.5上にjava7+tomcat7環境を作る」への1件のフィードバック

  1. ピンバック: Windows版Vagrant+Chef SoloでCentOS 6.5上にjava7+tomcat7環境を作る | infoScoop開発者ブログ - 真実を知ればおのれは自由になる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>