Chef-Solo で PHP をインストール (CentOS編)
Chef-Solo のインストールが終わったので、実際に使ってみることにする。
http://d.hatena.ne.jp/miau/20110405/1302011382
を参考に chef-solo で opscode のレシピを使って PHP をインストールしてみた。
事前準備
chef-solo に必要な環境が整っていることが前提(昨日の記事を参照)。
opscode の最新のレシピでは、php53 パッケージがインストールされるため、CentOS 5.6 が前提、5.5 以前だと動作しない。また、selinux は無効にしておかないと apache の起動に失敗してしまうので注意。
リポジトリのひな型を取得
cd /var git clone git://github.com/opscode/chef-repo.git chef-solo
opscode の cookbooks を取得
cd /var/chef-solo git clone git://github.com/opscode/cookbooks.git site-cookbooks/opscode
シンボリックリンクの作成
opscode で必要なレシピのみシンボリックリンクを作成する。
今回は、apache2 というレシピのみが必要となる。
cd /var/chef-solo/cookbooks ln -s /var/chef-solo/site-cookbooks/opscode/apache2
solo.rb の配置
mkdir /etc/chef
/etc/chef/solo.rb を以下のように作成する。
file_cache_path "/var/chef-solo" cookbook_path ["/var/chef-solo/cookbooks"] json_attribs "/etc/chef/node.json"
cookbook_path に opscode の cookbooks を含めるとなぜかエラーになるため、
ひな型の cookbooks のみにした。(事前に必要なものだけシンボリックリンクを張る。)
node.json の配置
solo.rb で指定したパスに node.json を配置。
{ "apache":{"listen_ports":["80"]}, "run_list":["recipe[apache2]", "recipe[apache2::mod_php5]"] }
chef-solo の実行
chef-solo
opscode のレシピの特徴は、CentOS でも、ディレクトリ構成が Debian スタイルであること。
例えば、
- /etc/httpd 以下のディレクトリ構成 (sites-available, mods-available など)
- DocumentRoot が /var/www/html ではなく /var/www である
- ログファイルが access_log ではなく access.log である
また、a2ensite や a2enmod などの Debian 由来のツールや、独自のツール(apache2_module_conf_generate.pl) がインストールされる。これらはパッケージで管理されていないため、アンインストールは手動で行う必要がある。