はじめに
こんにちは、竹内佑介です。今回は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内のフォルダ構成は、以下のようになっています。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
C:\USERS\ADMINISTRATOR\CHEFTEST | |
│ .gitignore | |
├───.chef | |
│ knife.rb | |
├───cookbooks | |
│ .gitkeep | |
├───data_bags | |
│ .gitkeep | |
├───environments | |
│ .gitkeep | |
├───nodes | |
│ .gitkeep | |
├───roles | |
│ .gitkeep | |
└───site-cookbooks | |
.gitkeep |
cookbookを作成する
次にcookbookと呼ばれる、ミドルウェアのインストール方法を定義したものを作ります。今回はubuntuにapacheを導入します。まずは以下コマンドで、cookbookのテンプレートを作成します。knife cookbook create <cookbook 名> -o site-cookbooks
site-cookbooks配下に、以下のようにcookbookのテンプレートが作成されます。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
C:\USERS\ADMINISTRATOR\CHEFTEST\SITE-COOKBOOKS | |
│ .gitkeep | |
│ | |
└───httpd | |
│ CHANGELOG.md | |
│ metadata.rb | |
│ README.md | |
│ | |
├───attributes | |
├───definitions | |
├───files | |
│ └───default | |
├───libraries | |
├───providers | |
├───recipes | |
│ default.rb | |
│ | |
├───resources | |
└───templates | |
└───default |
次にsite-cookbooks\<cookbook名>\recipes\default.rbファイルを以下の様に変更します。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Cookbook Name:: httpd | |
# Recipe:: default | |
# | |
# Copyright 2014, YOUR_COMPANY_NAME | |
# | |
# All rights reserved - Do Not Redistribute | |
# | |
package "apache2" do | |
action :install | |
end |
- "apache2"と書かれているところが、ubuntuのapt-getで導入するパッケージ名になります。
- action:installと書かれている部分が、インストールをするという意味になります。
Nodeオブジェクトを作成する
chefではNodeオブジェクトにより、サーバ毎に導入するミドルウェアを設定することができます。cdコマンドでNodeオブジェクトを配置するフォルダまで移動します。cd <kitchen名>\nodes
次に以下のようなファイルを作成します。ファイル名は、<ubuntuサーバのホスト名>.jsonにして下さい。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"run_list":[ | |
"recipe[cookbook名]" | |
] | |
} |
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 件のコメント:
コメントを投稿