2014年12月15日月曜日

vagrant-awsで作った環境に、chefでapacheを入れてみた

はじめに

こんにちは、竹内佑介です。今回はvagrant-aws上に作成した環境に、chefでapacheを導入してみようと思います。この記事はシリーズになっているので、いきなりここに来てしまった方は前回までの記事も参考にすると、より理解が深まると思います。
  1. vagrant-awsを使ってみた
  2. vagrant-omnibusを入れてみた
  3. Windowsにchefを入れてみる
なお、今回chefの使い方は以下サイトを参考にしました。

http://qiita.com/kasaharu/items/55a3000db31c52ce0bd7

chefのkitchenを作成する

chefを使う準備をするために、kitchenを作成します。kitchenとはchefを使うために必要となるファイル、フォルダ群のことです。コマンドプロンプトを開き、以下コマンドを実行することで、必要なファイル、フォルダを自動的に作成してくれます。

knife solo init <kitchen名>


カレントディレクトリにkitchen名のフォルダが作成されます。cdコマンドで先ほど作成したkitchen名ディレクトリに移動します。

cd <kitchen名>


kitchen内のフォルダ構成は、以下のようになっています。



cookbookを作成する

次にcookbookと呼ばれる、ミドルウェアのインストール方法を定義したものを作ります。今回はubuntuにapacheを導入します。まずは以下コマンドで、cookbookのテンプレートを作成します。

knife cookbook create <cookbook 名> -o site-cookbooks

site-cookbooks配下に、以下のようにcookbookのテンプレートが作成されます。

次にsite-cookbooks\<cookbook名>\recipes\default.rbファイルを以下の様に変更します。
  • "apache2"と書かれているところが、ubuntuのapt-getで導入するパッケージ名になります。
  • action:installと書かれている部分が、インストールをするという意味になります。


Nodeオブジェクトを作成する

chefではNodeオブジェクトにより、サーバ毎に導入するミドルウェアを設定することができます。cdコマンドでNodeオブジェクトを配置するフォルダまで移動します。

cd <kitchen名>\nodes

次に以下のようなファイルを作成します。ファイル名は、<ubuntuサーバのホスト名>.jsonにして下さい。

cookbookをubuntuサーバに適用する

以下コマンドで、外部サーバに対してcookbookの適用ができます。


knife cook -i sshキーファイルのパス ログインユーザ名@ログインホスト名

今回はAWS上のubuntuサーバなので、以下のようなコマンドになります。

knife cook -i Amazonのキーペアファイル(.pem)のパス ubuntu@ubuntuサーバのホスト名

  • AWS上にvagrantでubuntuを立ち上げる方法ですが、第1回目の記事を参考にして下さい。
  • AWS上にubuntuのインスタスを立ち上げた場合、ユーザ名"ubuntu"はパスワードなしでログインできるユーザになります。今回はk"ubuntu"ユーザを使い、knifeコマンドを実行します。
  • ubuntuサーバのホスト名ですが、vagratn sshでログインしてifconfigコマンドで調べて下さい。
  • これでchefが自動的にapacheをインストールしてくれます。


Ubuntuサーバにapacheが導入されたか確認する

Vagrantfileを配置したフォルダに移動して、以下コマンドでUbuntuサーバにログインします。Vagrantfileの詳細については、第1回目の記事を参照して下さい。

vagrant ssh

ログインができたら、以下コマンドでapacheが導入されている確認します。

service apache2 status

これで、以下画面のように" * apache2 is running"と表示されていればインストールは成功です。





最後に

vagrant-aws、chefを使ってみての感想を書きます。

vagrant-aws


  • 1度だけVagrantfileを作成すれば、1コマンドでAWSのインスタンス起動、ログインができるのが便利。
  • 初歩的なプラグイン(vagrant-omnibusとか)なら、ローカルvagrantとほぼ同じ間隔で使えるのが良い。
  • ssh、rsyncが使えないせいで不具合がでる、というようにWindows 特有の問題で悩まされることが多かった。
  • 調べていると、vagrant-awsでは一部対応していないプラグインがあることが分かった。

chef


  • 初期設定が少しだけ大変だが、大量のサーバに同じミドルウェアを導入できるのが凄い。
  • 色々と便利な機能が多いが、コマンドが多くて初めてやる人には少し敷居が高いと感じた。
  • Windows版だと、Gemが使えるようになるまでが大変だった。


vagrant-aws、chefともに素晴らしいツールなのですが、Windowsで使うためにやらなきゃいけないことが多かったです。実際、私もWindows対応で一番時間を使いました。そのせいで、vagrant-aws、chefともに深いところまでたどり着けませんでした。次に同じような企画をやる場合には、素直にLinux環境を使おうと思いました。

0 件のコメント:

コメントを投稿