みなさんこんにちはメガーネです。
今回はchef-soloを使って夏バテに効きそうな清涼感あふれるサーバーの構築をご紹介いたします。
chef-soloができると何がうれしい!?
インストール作業が楽になる
yum install httpd とか rpm -ivh mysql でインストールするルーチンワークから逃れられる設定ファイルもひな形を作成でき動的な値もマッピングできる
httpd.conf とか php.iniとかvi開いて編集を繰り返えさなくてもよくなるサーバーの技術的なナレッジを蓄積できそうな予感
「前回設定したあれなんだっけあれ!あれやってくれるやつ!」みたいな会話が減る本番と同じ構成でローカル開発できる
サーバーにあげたら何故か動きません!みたいな悲鳴が減る
今回の調理ポイント
- centos6がうごくサーバー(今回はsakura vps)を使用
- apacheをインストールします
Chef用語
Recipe(レシピ)
サーバーの設定手順書
Cookbook(クックブック)
Recipeをまとめとくやつ
Repository(レポジトリ)
CookbookとかをまとめたChef全体を管理する場所
難しい用語
Provisioning(プロビジョニング)
サーバー構築の自動化を行う
冪等性(べきとうせい)
引用(コピペ)
ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。
Chefの基本的な動作として冪等性は保証されております。
ですが書き方によっては、1回目に実行した内容と2回目に実行した内容が変わってしまう可能性があるので
テストしっかり!
調理の前の下準備
chefをインストール!
http://chefsoloonwindowstutorial.readthedocs.org/en/latest/install-chef-solo.html
(インストール方法はまさかの割愛)
windowsユーザーは以下必読
chefファイルをサーバー上に送る際にrsyncを使っているですが、
こいつを使えるようにするためwindowsだと少し特殊なことをせねばなりませぬ。
若干面倒ですが以下の手順でrsync, sshを使えるようにする必要があります。
今回はcygwinを使います。
- cygwinのインストーラー起動
- Select Packageでrsync,opensshをインストール
- binフォルダにパスを通す(C:\cygwin\bin or C:\cygwin64\bin)
- cygwin ternimalを起動して
rsyncはcygwin経由で実行されるため/cygdriveが絶対パスになってしまうので、パスを通してあげる。
1 | cd / |
調理開始!!
STEP1. Repositoryの作成
まずはRepositoryを作成しましょう
1 | $ knife solo init chef-repo |
こいうのができあがります(人´∀`).☆.。.:*・゚
1 | chef-repo ←Repository |
[cookbooks]
サードパティ製のCookbook
berkshelfというプラグインで管理するので手動ではいじらない
[site-cookbooks]
独自のCookbook
(基本ここにレシピを追加すればよさげ)
他のディレクトリは今回はふれません!
STEP2. Recipeの作成(献立を考える)
続いてRecipeの追加をしましょう
今回はsite-cookbooksにhttpdのRecipeを追加します
1 | $ cd chef-repo |
site-cookbooksにこいうRecipeができあがります(人´∀`).☆.。.:*・゚
1 | site-cookbooks |
[attributes]
デフォルトの設定情報を定義
[files]
アップロードファイル
[templates]
設定ファイルのひな形
httpd.confなどの設定ファイルに値を動的にマッピングして利用する
[recipes]
実行内容を記述
他のディレクトリは今回はふれません!
STEP3. Recipeの編集
Recipeをいじっていきましょう!
file:
site-cookbooks/httpd/attributes/default.rb
1 | default['httpd']['port'] = "80" |
file:
site-cookbooks/httpd/templates/default/httpd-vhosts.conf.erb
attributes で設定した内容がマッピングされる
1 | <VirtualHost *:<%= node[:httpd][:port] %>> |
file:
site-cookbooks/httpd/templates/default/httpd-vhosts.conf.erb
1 | # apacheのインストール |
STEP4.サーバーにchefをインストール
サーバー上でプロビジョニングを行える環境を整えましょう。
1 | $ knife solo prepare {ユーザー名}@{サーバーIP or HOST名} |
上記を実行するとRepositoryにnodesというフォルダが作成されいて、その中に{HOST}.jsonというファイルが作成されています。
{HOST}.jsonにどのRecipeを実行するかとか、レシピの中で使いたい設定値(動的にマッピングする値)を書いていきます
1 | { |
これでプロビジョニングできる環境が整いました!
STEP5. Let’s Cooking!!
1 | $ knife solo cook {ユーザー名}@{HOST} |
完了したらドキュメントルートにhtmlファイルを設置して確認してみよう!