ここ最近、Windows Azureを利用してUbuntu Linuxの仮想マシンを作って、そこからknife-azureで別の仮想マシンを作って…ということをしました。
実行した手順
わかりにくくなるので、いくつかの手順ごとに図をつけて青い吹き出しで実行した操作を書いておきます。
リポジトリ作成
knife soloコマンドでchef-repoという名前のリポジトリを作成しました。
knife solo init chef-repo
今回は「/home/ユーザ名」で実行してるので「/home/ユーザ名/chef-repo」ができました。
JavaのCookbook取得と配置
Cookbookはコマンドで取得してみました。まずはJavaから。
knife cookbook site download "java"
解凍します。
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は組込みでインストールされたっぽいです。
knife solo preapre ユーザ名@Javaを入れたいリモートのIP
しばらく待って
インストールされたっぽい!そして「Javaを入れたいリモートのIP.json」のファイルがnodesフォルダ配下にできました。
(これもカレントによってできる場所変わるので、最終的にはchef-repoのnodes配下に置きました)
一応リモートのほうにログインしてfindでchef探したらありました。
せっかくリモートにログインしたので、試しに「java」と打つと以下のような結果でした。
仮想マシン作ってから何もしてないのでJavaも入ってません。
で、一旦Javaを入れるリモートは置いといて、手元の作業マシンに戻ります。
続けて以下作業をしました。
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
を実行しました。何回もパスワード聞かれてあれですが(ここは何か設定がありそうだな…)
失敗…。落としたJavaのCookbookにあるmetadata.rbの中身をみると
depends "windows"
depends "aws"
とあったので、これが足りてない様子。このCookbookの依存は自動で取得したりはしない…のかな?(^^;この辺がまだよくわかってないです。
自分で取得してCookbookに配置すればいけそうですが、今回手抜きでこの2行を削除して再度実行しました。
するとズラズラとメッセージが出て
いけたっぽい(^^;
確認のため、再度リモートのマシンにログインしてjavaコマンドを幾つか試してみると
できてる!すげー!
ということで、ちょっと手抜きしてますが、以下の所まで出来ました。
残るは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
メッセージが色々と出てきて
なんかいけたっぽい(^^;
ログインして確認した所
おお、GlassFishが入ってる!
ちなみに上記手順のデフォルトだとdomainまでは生成されず、インストールだけです。
今回はこの後、いったん手でdomain作って実行してみた所、以下のように管理コンソールが確認できました!
(とりあえずテキストブラウザ確認っていう変な感じですが…まあおいておいて)
domainを作成するrecipeもあるので、この辺を使っていけば自動化もできそうですね。
その辺も時間をみて触っていきたいと思います。
今回Linuxでやりましたが、仕事ではWindows Serverが多いので、Windowsベースにchef-solo使えるようにしないと(^^;
作業マシンがLinuxでノードがWindows Serverとかもできる…のかな?色々調べて行かないと。。。