はじめに
こんにちは、竹内佑介です。今回はvagrant-aws上に作成した環境に、chefでapacheを導入してみようと思います。この記事はシリーズになっているので、いきなりここに来てしまった方は前回までの記事も参考にすると、より理解が深まると思います。なお、今回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 件のコメント:
コメントを投稿