Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

ChefのCookbookでJavaとGlassFishをインストールしてみました

ここ最近、Windows Azureを利用してUbuntu Linuxの仮想マシンを作って、そこからknife-azureで別の仮想マシンを作って…ということをしました。

段々Windows Azure関係なくChef-Soloの話になってるので、いったんタイトル変更(^^;

今日はそこからさらに、knife-soloでサードパーティのCookbookを使ってJavaやGlassFishのインストールをしてみました。

文字で書くとわかりにくいので…絵にすると以下のような感じです。

今までが

f:id:kikutaro777:20140113041733p:plain

で、今日は

f:id:kikutaro777:20140113214650p:plain

です。

「入門Chef Solo」

今までずっとググりながら手探りでやってたのですが、やっぱり「入門Chef Solo - Infrastructure as Code」買いました(^^;

自分が買ったのは以下PDF版です。

入門Chef Solo - Infrastructure as Code
伊藤直也
達人出版会
発行日: 2013-03-22
対応フォーマット: EPUB, PDF

Amazon Kindle版は以下。

やっぱり買って良かった(^^!色々頭の中が整理されました。
もっと細かく読み込んでいかねば。

JavaとGlassFishのCookbook

OpsCodeで公開されていた以下サードパーティのCookbookでインストールを試してみました。

今回はあくまでもお試しレベルなので、最終的には環境に合わせて自分でCookbookやRecipeを準備するほうがいいのかもしれません。

  • Chef Cookbook: java

http://community.opscode.com/cookbooks/java

  • Chef Cookbook: glassfish

http://community.opscode.com/cookbooks/glassfish

実行した手順

わかりにくくなるので、いくつかの手順ごとに図をつけて青い吹き出しで実行した操作を書いておきます。

f:id:kikutaro777:20140113215935p:plain

リポジトリ作成

knife soloコマンドでchef-repoという名前のリポジトリを作成しました。

knife solo init chef-repo

f:id:kikutaro777:20140113220255j:plain

今回は「/home/ユーザ名」で実行してるので「/home/ユーザ名/chef-repo」ができました。

JavaのCookbook取得と配置

Cookbookはコマンドで取得してみました。まずはJavaから。

knife cookbook site download "java"

f:id:kikutaro777:20140113220853j:plain

解凍します。

tar zxvf java-1.17.6.tar.gz

解凍されたフォルダ「java」はmvコマンドでchef-repoのcookbooksに移動させました。

knife-soloでchef-soloインストール

次にJavaを入れたいリモートマシンにコマンドでchef-soloを入れます。
リモートのほうは、knife-azureで構築してから何も触っていない状態で、Rubyもインストールされていませんが、以下コマンドで普通にchef-soloがインストールされました。Rubyは組込みでインストールされたっぽいです。

f:id:kikutaro777:20140113222427p:plain

knife solo preapre ユーザ名@Javaを入れたいリモートのIP

f:id:kikutaro777:20140113222644j:plain

しばらく待って

f:id:kikutaro777:20140113222928j:plain

インストールされたっぽい!そして「Javaを入れたいリモートのIP.json」のファイルがnodesフォルダ配下にできました。
(これもカレントによってできる場所変わるので、最終的にはchef-repoのnodes配下に置きました)

一応リモートのほうにログインしてfindでchef探したらありました。

せっかくリモートにログインしたので、試しに「java」と打つと以下のような結果でした。

f:id:kikutaro777:20140113223242j:plain

仮想マシン作ってから何もしてないのでJavaも入ってません。

で、一旦Javaを入れるリモートは置いといて、手元の作業マシンに戻ります。

続けて以下作業をしました。

f:id:kikutaro777:20140113224726p:plain

jsonファイルを編集

さきほど生成された「Javaを入れたいリモートのIP.json」をviで以下編集しました。

{
  "java": {
    "install_flavor": "oracle",
    "jdk_version": 7,
    "oracle": {
      "accept_oracle_download_terms": true
    }
  },
  "run_list": [
    "recipe[java]"
  ]
}

最初はrun_listの部分だけ書いていたのですが、デフォルトだとOpenJDKの6がインストールされてしまいました(^^;

今回自分が入れたかったのはOracleのJDK7なので、上記のようにattributeの設定が必要なようです。

この辺の書き方が最初よくわからず、購入した「入門Chef Solo - Infrastructure as Code
」を読みつつ、OpscodeのCookbookページを見ながらやりました。

Chef Cookbook: java
http://community.opscode.com/cookbooks/java

慣れて使いこなせれば色々なインストールができそうなので強力そうだなぁ。

knife solo cookでJavaインストール

設定ができたので

knife solo cook ユーザ名@Javaを入れたいリモートのIP

を実行しました。何回もパスワード聞かれてあれですが(ここは何か設定がありそうだな…)

f:id:kikutaro777:20140113225537j:plain

失敗…。落としたJavaのCookbookにあるmetadata.rbの中身をみると

depends "windows"
depends "aws"

とあったので、これが足りてない様子。このCookbookの依存は自動で取得したりはしない…のかな?(^^;この辺がまだよくわかってないです。

自分で取得してCookbookに配置すればいけそうですが、今回手抜きでこの2行を削除して再度実行しました。

するとズラズラとメッセージが出て

f:id:kikutaro777:20140113230118j:plain

f:id:kikutaro777:20140113230124j:plain

いけたっぽい(^^;

確認のため、再度リモートのマシンにログインしてjavaコマンドを幾つか試してみると

f:id:kikutaro777:20140113230502j:plain

f:id:kikutaro777:20140113230508j:plain

できてる!すげー!

ということで、ちょっと手抜きしてますが、以下の所まで出来ました。

f:id:kikutaro777:20140113230834p:plain

残るはGlassFishですが、手順的にはこれもJavaと同じで、今回は以下手順でやりました。

GlassFishのCookbook取得

knife cookbook site download "glassfish"

解凍してchef-repoのCookbook配下に配置。

今回Javaを入れたマシンと同じマシンにGlassFishを入れるので、先ほどと同じjsonファイルにrecipeのglassfishを追加しました。

{
  "java": {
    "install_flavor": "oracle",
    "jdk_version": 7,
    "oracle": {
      "accept_oracle_download_terms": true
    }
  },
  "run_list": [
    "recipe[java]",
    "recipe[glassfish]"
  ]
}

で、knife solo cookを実行します。

knife solo cook ユーザ名@Javaを入れた(かつ今からGlassFishを入れる)リモートのIP

メッセージが色々と出てきて

f:id:kikutaro777:20140113231317j:plain

f:id:kikutaro777:20140113231325j:plain

なんかいけたっぽい(^^;

ログインして確認した所

f:id:kikutaro777:20140113231430j:plain

おお、GlassFishが入ってる!

ちなみに上記手順のデフォルトだとdomainまでは生成されず、インストールだけです。

f:id:kikutaro777:20140113232957p:plain

今回はこの後、いったん手でdomain作って実行してみた所、以下のように管理コンソールが確認できました!
(とりあえずテキストブラウザ確認っていう変な感じですが…まあおいておいて)

f:id:kikutaro777:20140113231539j:plain

domainを作成するrecipeもあるので、この辺を使っていけば自動化もできそうですね。
その辺も時間をみて触っていきたいと思います。

今回Linuxでやりましたが、仕事ではWindows Serverが多いので、Windowsベースにchef-solo使えるようにしないと(^^;

作業マシンがLinuxでノードがWindows Serverとかもできる…のかな?色々調べて行かないと。。。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村