もふもふ技術部

CentOS 6.4でchef soloとknife soloを使ってphp実行環境を構築


今回はchef solo + knife soloを使ってクライアント側でレシピ編集してみました。phpをソースからコンパイルしてインストールします。

引き続きAWS EC2 CentOS 6.4で行きます。クライアントはMac OS X Lion。

お料理だよ!

前提としてクライアントが下記の状態とします。サーバ側はknife soloがうまいことやってくれるので事前設定は不要です。まぁラクチン!

・rubyとrubygemsがインストール済み
・サーバにsshログイン可能(sudo権限ありのuser)

クライアントにchefとknife soloをインストールします。
knifeはchefの操作を手伝ってうんたんうんたんしてくれる。
うんたん?

knifeの設定。いろいろ聞かれますがすべてEnterで問題なさげ。

リポジトリを作成。基本のディレクトリ構成が出来上がります。これをkitchenと呼ぶのかな?

site-cookbooksには自作のレシピを保存して、cookbooksにはサードパーティー出来合いのレシピを保存するっぽい。

phpをインストールするレシピを書きたいので、まずはひな形を作成します。

phpのソースコードを落としてきて、chef管理下に置きます。こうすると実行時に自動的にファイルをサーバに転送してくれます。こりゃ楽だ。ラクダ。
http://php.net/downloads.php

いよいよごにょごにょとレシピを書いていきます。

yum_packageリソースで内部的にyum installしてくれます。gcc make git libxml2 libxml2-develをしていてeachでループしながらインストールしていきます。

cookbook_fileリソースはchefリポジトリにあるファイルをコピーして配置してくます。ここ同時にchmod 0644しています。

bashリソースはその名の通りbashでコマンドを実行してくれるってことであってるかな?
code <<-EOH 〜 のブロック内のコマンドを実行します。 bashリソース内のnot_ifで ls /usr/local/php-5.4.21 というのは、既にディレクトリがあればこのリソースを実行しないという意味です。phpがインストール済みなら2度はやらないということですね。 さて、 次は実行するレシピを指定するファイルを作成します。chef2 というのは .ssh/config で設定したサーバ名です。

knife.rbを編集。これやらなくてもいいかも。

お料理の前準備をします。ssh接続可能なsudo権限のあるユーザーが必要です。このコマンドでサーバ側にchefがインストールされてリポジトリも作成されます。

いよいよお料理開始します! phpのコンパイルがかなり時間かかるので30分クッキングくらいになってしまいそうな。

こんな感じで出来上がり。

手探りでレシピ書いてるとやっぱり詳細なログが必要になってくるのですが、どうしてもknife solo経由でログレベルをdebugにする方法がわからず…orz infoだとエラー情報がほとんど出力されないので無理ゲーすぎます。結局knife soloで転送されたサーバ側リポジトリで直接chefを実行してデバッグしてました。これじゃknife soloの意味がないような気も。 サーバ側でログレベルを変更するにはsolo.rbを編集すればできます。

かん☆そう

まだまだ手探り状態なのでまずは動かすことを優先しているため、templeteとかattributeとかパラメータとか、まだよくわかってないヤツ、は使わないようにしています。実運用する際はもうちょっと汎用的に組む必要がありそう。

コマンド一発ではうまくできなくても、ある程度の基盤がすぐ出来上がるくらいのレシピはかけるようになりたいですね!

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。

2 thoughts on “CentOS 6.4でchef soloとknife soloを使ってphp実行環境を構築

  1. Pingback: chefとvagrantで遊び環境を作ってみたよ | Morizotter Blog

  2. Pingback: いけむのブログ with h - Pallalelsを使ったVagrantのCentOSにChefでphpをインストール