先日のVagrantのエントリー内でちょっと触れたChefを試してみます
Chefとは
Rubyで作られたサーバの構成管理ツールです
いろんなサーバにapacheとか入れたり設定ファイルも配置しちゃったりできるようです
これで下記みたいな時に幸せになれるのかもしれません
- 特定のサーバだけ設定がもれてて動かなかった!
- あのサーバだけライブラリのバージョン違うじゃねぇか!!
- 100台サーバあるけど、apacheのバージョン更新しといて
ただ、ChefにはServerやらClientやらNodeやらRoleやらいろんな考えがあって、
最初から完璧にやろうと思うと必ず失敗します。
自分もすでに数回目(笑)
今回はVagrantで使うことを目的としていますので、chef-soloだけで試そうと思います
最終的には開発用のVirtualBoxと公開用サーバでアプリとか設定とかを統一していきたいです
インストール
Rubyは入っているという想定です
1
|
|
これだけでOk
Chefに関する設定ファイルを作成
下記のコマンドを実行して設定ファイルを作成します
1
|
|
設定ファイルの置き場所とかが聞かれると思うので $HOME/.chef/ にしてみましょう
ファイルの設定が終わったら、~/.chef/knife.rbにcookbookの保管場所を設定します
1
|
|
レシピ作成
…ここではレシピと言うべきなのかクックブックと言うべきなのか
インストールするもの毎に作るのが慣習ぽいです
apacheならapacheだけ。PHPとかでライブラリを入れる場合は一緒でもいいのかな?
今回は単に静的ファイルを1つ置くだけのレシピを書いてみましょう
1
|
|
cookbook_path以下にstatic_fileというディレクトリが出来ているはずです
ここがstatic_fileレシピに関する情報をまとめるディレクトリになります
レシピディレクトリの中身
- attributes
- definitions
- files
- libraries
- providers
- recipes
- resources
- templates
8つのディレクトリと
- metadata.rb
- README.md
2つのファイルがあります
今回は静的ファイルを置くだけなので、recipesとfilesディレクトリ以外は消しておきます
ファイルを置いてみる
ファイルの扱いに関してはここを参考にしています
ファイルを置くのは簡単で
- files以下に置きたいファイルを置く
- recipes/default.rbに cookbook_file メソッドでファイルを指定
といった感じです。
実際にやってみます
files 以下にsample.txtを作る
recipes/default.rb に以下のようにファイルを配置したいパスを指定
1 2 3 |
|
これでレシピの作成は完了
ではこのレシピをVagrantで利用してみましょう
Vagrantfileの途中にchef-soloの記述があるのでその部分を以下のように変更します
1 2 3 4 5 6 7 8 9 |
|
あとはVagrantから仮想マシンを立ちげれば反映されてるはずです
1
|
|
その後以下のコマンドでファイルがあるかを確認してみましょう
1 2 3 |
|
ファイルはちゃんと配置されたでしょうか?
まだここだと嬉しさわからないと思うので次回はテンプレートを使って値の書き換え等を行うのを確認したいと思います