Chefを用いたLAMP開発環境の構築方法~LAMP環境構築編

By • 2014-01-25 • Cloud, Development

Chef公式サイト

はじめに

前回の記事では、Chef環境の構築から仮想マシンの基本設定を行うレシピの実行までを解説しました。今回は、LAMP環境を構築するレシピを作成し、プロビジョニングを行う方法を解説します。

構築前の準備

今回構築するLAMP環境は、LAMP開発環境の構築方法~LAMP環境構築編と同様です。

また、Chefプロビジョニングで使用するサーバー設定ファイルを、LAMP環境構築編で作成したサーバーからローカルにコピーします。

$ cd ~/vagrant/lamp
$ vagrant up
$ vagrant ssh
$ cp /etc/httpd/conf/httpd.conf /vagrant
$ cp /etc/php.ini /vagrant
$ cp /etc/my.cnf /vagrant
$ cd ~/vagrant/lamp

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
DL is deprecated, please use Fiddle
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
[default] VM already provisioned. Run `vagrant provision` or use `--provision` to force it

$ vagrant ssh
Last login: Thu Jan 16 15:30:31 2014 from 10.0.2.2
[vagrant@lamp ~]$ cp /etc/httpd/conf/httpd.conf /vagrant
[vagrant@lamp ~]$ cp /etc/php.ini /vagrant
[vagrant@lamp ~]$ cp /etc/my.cnf /vagrant
[vagrant@lamp ~]$

リポジトリのインストール

サードパーティリポジトリをインストールするCookbookを作成します。

1.レシピの指定

Vagrantfileを下記のとおり編集します。

実行するレシピを追加しています。

$ vi Vagrantfile
chef.add_recipe "repo"

5003-02

2.Repo Cookbookの作成

Repo Cookbookを作成します。

$ knife cookbook create repo -o site-cookbooks
$ knife cookbook create repo -o site-cookbooks
** Creating cookbook repo
** Creating README for cookbook: repo
** Creating CHANGELOG for cookbook: repo
** Creating metadata for cookbook: repo

3.属性の設定

サードパーティリポジトリをダウンロードするサイトなどの設定を、Cookbookのattributeとして設定します

$ vi site-cookbooks/repo/attributes/default.rb
# EPEL
default['epel']['file_name']  = "epel-release-6-8.noarch.rpm"
default['epel']['remote_uri'] = "ftp://ftp.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm"

# remi
default['remi']['file_name']  = "remi-release-6.rpm"
default['remi']['remote_uri'] = "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm"
# RPMForge
default['rpmforge']['file_name']  = "rpmforge-release-0.5.3-1.el6.rf.i686.rpm"
default['rpmforge']['remote_uri'] = "http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm"

5003-04

4.レシピの作成

attributeで指定したリポジトリを参照して、リモートサイトからダウンロードしインストールするレシピを作成します。

$ vi site-cookbooks/repo/recipes/default.rb
# EPELリポジトリのインストール
remote_file "/tmp/#{node['epel']['file_name']}" do
  source "#{node['epel']['remote_uri']}"
  not_if { ::File.exists?("/tmp/#{node['epel']['file_name']}") }
end

package node['epel']['file_name'] do
  action :install
  provider Chef::Provider::Package::Rpm
  source "/tmp/#{node['epel']['file_name']}"
  not_if "yum list installed | grep installed | grep -q epel"
end

# remiリポジトリのインストール
remote_file "/tmp/#{node['remi']['file_name']}" do
  source "#{node['remi']['remote_uri']}"
  not_if { ::File.exists?("/tmp/#{node['remi']['file_name']}") }
end

package node['remi']['file_name'] do
  action :install
  provider Chef::Provider::Package::Rpm
  source "/tmp/#{node['remi']['file_name']}"
  not_if "yum list installed | grep installed | grep -q remi"
end

# RPMForgeリポジトリのインストール
remote_file "/tmp/#{node['rpmforge']['file_name']}" do
  source "#{node['rpmforge']['remote_uri']}"
  not_if { ::File.exists?("/tmp/#{node['rpmforge']['file_name']}") }
end

package node['rpmforge']['file_name'] do
  action :install
  provider Chef::Provider::Package::Rpm
  source "/tmp/#{node['rpmforge']['file_name']}"
  not_if "yum list installed | grep installed | grep -q rpmforge"
end

# リポジトリの設定変更
bash 'repo' do
  user 'root'
  code <<-EOC
cd /etc/yum.repos.d
for r in epel.repo remi.repo rpmforge.repo; do cp -p $r $r.old; cat $r.old | sed 's/^enabled.*$/enabled = 0/' > $r; done
  EOC
  not_if "grep -q 'enabled = 0' /etc/yum.repos.d/epel.repo"
end

5003-05

5003-06

5.レシピの実行

レシピが作成できましたので、プロビジョニングを行います。

$ vagrant provision
$ vagrant provision
DL is deprecated, please use Fiddle
[default] Chef 11.8.2 Omnibus package is already installed.
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-01-17T14:41:43+09:00] INFO: Forking chef instance to converge...
[2014-01-17T14:41:43+09:00] INFO: *** Chef 11.8.2 ***
[2014-01-17T14:41:43+09:00] INFO: Chef-client pid: 3005
[2014-01-17T14:41:44+09:00] INFO: Setting the run_list to ["recipe[base]", "recipe[repo]"] from JSON
[2014-01-17T14:41:44+09:00] INFO: Run List is [recipe[base], recipe[repo]]
[2014-01-17T14:41:44+09:00] INFO: Run List expands to [base, repo]
[2014-01-17T14:41:44+09:00] INFO: Starting Chef Run for chef-lamp.vagrantup.com
[2014-01-17T14:41:44+09:00] INFO: Running start handlers
[2014-01-17T14:41:44+09:00] INFO: Start handlers complete.
[2014-01-17T14:41:46+09:00] INFO: remote_file[/tmp/epel-release-6-8.noarch.rpm] created file /tmp/epel-release-6-8.noarch.rpm
[2014-01-17T14:41:51+09:00] INFO: remote_file[/tmp/epel-release-6-8.noarch.rpm] updated file contents /tmp/epel-release-6-8.noarch.rpm
[2014-01-17T14:41:55+09:00] INFO: remote_file[/tmp/remi-release-6.rpm] created file /tmp/remi-release-6.rpm
[2014-01-17T14:42:01+09:00] INFO: remote_file[/tmp/remi-release-6.rpm] updated file contents /tmp/remi-release-6.rpm
[2014-01-17T14:42:02+09:00] INFO: remote_file[/tmp/rpmforge-release-0.5.3-1.el6.rf.i686.rpm] created file /tmp/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
[2014-01-17T14:42:26+09:00] INFO: remote_file[/tmp/rpmforge-release-0.5.3-1.el6.rf.i686.rpm] updated file contents /tmp/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
[2014-01-17T14:42:28+09:00] INFO: bash[repo] ran successfully
[2014-01-17T14:42:28+09:00] INFO: Chef Run complete in 44.31108137 seconds
[2014-01-17T14:42:28+09:00] INFO: Running report handlers
[2014-01-17T14:42:28+09:00] INFO: Report handlers complete
[2014-01-17T14:41:43+09:00] INFO: Forking chef instance to converge...

6.動作確認

リポジトリがインストールされているか確認します。

$ vagrant ssh
$ for r in epel remi rpmforge; do yum list installed | grep installed | grep $r; done
$ vagrant ssh
Last login: Fri Jan 17 14:47:50 2014 from 10.0.2.2
[vagrant@chef-lamp ~]$ for r in epel remi rpmforge; do yum list installed | grep installed | grep $r; done
epel-release.noarch   6-8                 installed
remi-release.noarch   6.4-1.el6.remi      installed
rpmforge-release.i686 0.5.3-1.el6.rf      installed
[vagrant@chef-lamp ~]$

Apache環境の構築

ApacheをインストールするCookbookを作成します。

1.レシピの指定

Vagrantfileを下記のとおり編集します。

ServerAdminおよび、ServerNameに指定するパラメタも合わせて指定しています。

chef.add_recipe "httpd"
httpd: {
  admin: "root@chef-lamp.vagrantup.com",
  fqdn: "chef-lamp.vagrantup.com",
  port: 80
},

5003-10

2.httpd Cookbookの作成

httpd Cookbookを作成します。

$ knife cookbook create httpd -o site-cookbooks
$ knife cookbook create httpd -o site-cookbooks
** Creating cookbook httpd
** Creating README for cookbook: httpd
** Creating CHANGELOG for cookbook: httpd
** Creating metadata for cookbook: httpd

3.httpd.confテンプレートの作成

構築前の準備でローカルにコピーしたhttpd.confを下記のとおり編集します。

編集によって、Vagrantfileで指定したadmin/fqdn/port変数がhttpd.confに反映されるようになります。

$ cp ../lamp/httpd.conf site-cookbooks/httpd/templates/default/httpd.conf.erb
$ vi site-cookbooks/httpd/templates/default/httpd.conf.erb

5003-12

ServerAdmin 
ServerName :

5003-13

4.レシピの作成

Apacheのインストール、httpd.confの設定、自動起動を設定するレシピを作成します。

レシピでは、先に作成したhttpd.confテンプレートを指定し、毎回実行されないようにaction=nothingとしています。また、パッケージをインストールした時に、httpd.confを設定するようにnotifyリソースを指定しています。

$ vi site-cookbooks/httpd/recipes/default.rb
# httpd.conf設定
template "httpd.conf" do
  path "/etc/httpd/conf/httpd.conf"
  source "httpd.conf.erb"
  mode 0644
  action :nothing
end

# パッケージインストール
package "httpd" do
  action :install
  notifies :create, resources( :template => "httpd.conf" )
end

# サービス起動と自動起動設定
service "httpd" do
  action [:start, :enable]
end

5003-14

5.レシピの実行

レシピが作成できましたので、プロビジョニングを行います。

$ vagrant provision
$ vagrant provision
DL is deprecated, please use Fiddle
[default] Chef 11.8.2 Omnibus package is already installed.
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-01-17T18:07:38+09:00] INFO: Forking chef instance to converge...
[2014-01-17T18:07:38+09:00] INFO: *** Chef 11.8.2 ***
[2014-01-17T18:07:38+09:00] INFO: Chef-client pid: 2253
[2014-01-17T18:07:39+09:00] INFO: Setting the run_list to ["recipe[base]", "recipe[repo]", "recipe[httpd]"] from JSON
[2014-01-17T18:07:39+09:00] INFO: Run List is [recipe[base], recipe[repo], recipe[httpd]]
[2014-01-17T18:07:39+09:00] INFO: Run List expands to [base, repo, httpd]
[2014-01-17T18:07:39+09:00] INFO: Starting Chef Run for chef-lamp.vagrantup.com
[2014-01-17T18:07:39+09:00] INFO: Running start handlers
[2014-01-17T18:07:39+09:00] INFO: Start handlers complete.
[2014-01-17T18:08:09+09:00] INFO: package[httpd] installing httpd-2.2.15-29.el6.centos from base repository
[2014-01-17T18:08:20+09:00] INFO: service[httpd] started
[2014-01-17T18:08:20+09:00] INFO: service[httpd] enabled
[2014-01-17T18:08:20+09:00] INFO: package[httpd] sending create action to template[httpd.conf] (delayed)
[2014-01-17T18:08:21+09:00] INFO: template[httpd.conf] backed up to /var/chef/backup/etc/httpd/conf/httpd.conf.chef-20140117180821.039793
[2014-01-17T18:08:21+09:00] INFO: template[httpd.conf] updated file contents /etc/httpd/conf/httpd.conf
[2014-01-17T18:08:21+09:00] INFO: Chef Run complete in 41.276097145 seconds
[2014-01-17T18:08:21+09:00] INFO: Running report handlers
[2014-01-17T18:08:21+09:00] INFO: Report handlers complete
[2014-01-17T18:07:38+09:00] INFO: Forking chef instance to converge...

6.動作確認

ブラウザでアクセスすると、デフォルトページが表示されます。

5003-16

MySQL環境の構築

MySQLをインストールするCookbookを作成します。

1.レシピの指定

Vagrantfileを下記のとおり編集します。

実行するレシピおよび、MySQLのrootユーザーパスワードを指定しています。

chef.add_recipe "mysql"

mysql: {
  passwd: "ro0tUser"
},

5003-17

2.MySQL Cookbookの作成

MySQL Cookbookを作成します。

$ knife cookbook create mysql -o site-cookbooks
$ knife cookbook create mysql -o site-cookbooks
** Creating cookbook mysql
** Creating README for cookbook: mysql
** Creating CHANGELOG for cookbook: mysql
** Creating metadata for cookbook: mysql

3.my.cnfテンプレートの作成

構築前の準備でローカルにコピーしたmy.cnfを、テンプレートとして保存します。

$ cp ../lamp/my.cnf site-cookbooks/mysql/templates/default/my.cnf.erb

5003-19

4.レシピの作成

MySQLのインストール、my.cnfの設定、自動起動および、セキュリティを設定するレシピを作成します。

Apacheのレシピと同様に、パッケージがインストールされた後、MySQL設定ファイルを作成します。

$ vi site-cookbooks/mysql/recipes/default.rb
# my.cnf設定
template "my.cnf" do
  path "/etc/my.cnf"
  source "my.cnf.erb"
  mode 0644
  action :nothing
end

# パッケージインストール
package "mysql-server" do
  action :install
  options "--enablerepo=remi"
  notifies :create, resources( :template => "my.cnf" )
end

# サービス起動と自動起動設定
service "mysqld" do
  action [:start, :enable]
end

# セキュリティ設定
# 匿名ユーザーの削除
# リモートからのrootユーザー接続を禁止
# testデータベースの削除
# rootユーザーパスワードの設定
# 権限データベースのリロード
script "secure_setting" do
  interpreter 'bash'
  user "root"
  not_if "mysql -u root -p#{node[:mysql][:passwd]} -e 'show status'"
  code <<-EOC
mysql -u root -e "DELETE FROM mysql.user WHERE User='';"
mysql -u root -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -u root -e "DROP DATABASE test;"
mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('#{node[:mysql][:passwd]}') WHERE User='root';"
mysql -u root -e "FLUSH PRIVILEGES;"
  EOC
end

# サービス再起動
service "mysqld" do
  action :restart
end

5003-20

5003-21

5.レシピの実行

レシピが作成できましたので、プロビジョニングを行います。

$ vagrant provision
$ vagrant provision
DL is deprecated, please use Fiddle
[default] Chef 11.8.2 Omnibus package is already installed.
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-01-17T18:50:24+09:00] INFO: Forking chef instance to converge...
[2014-01-17T18:50:24+09:00] INFO: *** Chef 11.8.2 ***
[2014-01-17T18:50:24+09:00] INFO: Chef-client pid: 4371
[2014-01-17T18:50:24+09:00] INFO: Setting the run_list to ["recipe[base]", "recipe[repo]", "recipe[httpd]", "recipe[mysql]"] from JSON
[2014-01-17T18:50:24+09:00] INFO: Run List is [recipe[base], recipe[repo], recipe[httpd], recipe[mysql]]
[2014-01-17T18:50:24+09:00] INFO: Run List expands to [base, repo, httpd, mysql]
[2014-01-17T18:50:24+09:00] INFO: Starting Chef Run for chef-lamp.vagrantup.com
[2014-01-17T18:50:24+09:00] INFO: Running start handlers
[2014-01-17T18:50:24+09:00] INFO: Start handlers complete.
[2014-01-17T18:50:25+09:00] WARN: Cloning resource attributes for service[mysqld] from prior resource (CHEF-3694)
[2014-01-17T18:50:25+09:00] WARN: Previous service[mysqld]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/default.rb:21:in `from_file'
[2014-01-17T18:50:25+09:00] WARN: Current  service[mysqld]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/default.rb:45:in `from_file'
[2014-01-17T18:50:34+09:00] INFO: package[mysql-server] installing mysql-server-5.5.35-1.el6.remi from remi repository
[2014-01-17T18:51:14+09:00] INFO: service[mysqld] started
[2014-01-17T18:51:15+09:00] INFO: service[mysqld] enabled
[2014-01-17T18:51:22+09:00] INFO: service[mysqld] restarted
[2014-01-17T18:51:22+09:00] INFO: package[mysql-server] sending create action to template[my.cnf] (delayed)
[2014-01-17T18:51:22+09:00] INFO: Chef Run complete in 57.572522985 seconds
[2014-01-17T18:51:22+09:00] INFO: Running report handlers
[2014-01-17T18:51:22+09:00] INFO: Report handlers complete
[2014-01-17T18:50:24+09:00] INFO: Forking chef instance to converge...

6.動作確認

MySQLがインストールされているか確認します。

mysqlコマンド実行時のパスワードには、Vagrantfileで指定したパスワードを入力します。

$ vagrant ssh
$ mysql -u root -p -e 'status'

5003-23

PHP環境の構築

PHPをインストールするCookbookを作成します。

1.レシピの指定

Vagrantfileを下記のとおり編集します。

実行するレシピおよび、PHPのtimezoneを指定しています。

chef.add_recipe "php54"

php54: {
  timezone: "Asia/Tokyo"
},

5003-24

2.MySQL Cookbookの作成

PHP Cookbookを作成します。

$ knife cookbook create php54 -o site-cookbooks
$ knife cookbook create php54 -o site-cookbooks
** Creating cookbook php54
** Creating README for cookbook: php54
** Creating CHANGELOG for cookbook: php54
** Creating metadata for cookbook: php54

3.php.iniテンプレートの作成

構築前の準備でローカルにコピーしたphp.iniを下記のとおり編集します。

編集によって、Vagrantfileで指定したtimezone変数がphp.iniに反映されるようになります。

$ cp ../lamp/php.ini site-cookbooks/php54/templates/default/php.ini.erb
$ vi site-cookbooks/php54/templates/default/php.ini.erb

5003-26

date.timezone = '<%= node[:php54][:timezone]%>'

5003-27

4.PHPサンプルテンプレートの作成

PHPをインストールした後の動作確認用に、PHPサンプルのテンプレートを作成します。

$ vi site-cookbooks/php54/templates/default/phpinfo.php.erb
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
phpinfo</title>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>

5003-28

5.レシピの作成

PHPのインストール、php.iniの設定、PHPサンプルファイルを作成するレシピを作成します。

Apacheのレシピと同様に、パッケージがインストールされた後、PHP設定ファイルおよび、PHPサンプルファイルを作成します。

$ vi site-cookbooks/php54/recipes/default.rb
# php.ini設定
template "php.ini" do
  path "/etc/php.ini"
  source "php.ini.erb"
  mode 0644
  action :nothing
end

# PHPサンプル
template "phpinfo.php" do
  path "/var/www/html/phpinfo.php"
  source "phpinfo.php.erb"
  mode 0644
  action :nothing
end

# パッケージインストール
package "php" do
  action :install
  options "--enablerepo=remi"
  notifies :create, resources( :template => "php.ini" )
  notifies :create, resources( :template => "phpinfo.php" )
  notifies :restart, 'service[httpd]'
end

# 関連パッケージのインストール
%w{
  php-mysql
  php-gd php-pdo
  php-pear
  php-mbstring
  php-devel
}.each do |p|
  package p do
    action :install
    options "--enablerepo=remi"
  end
end

# php-mcryptパッケージのインストール
package "php-mcrypt" do
  action :install
  options "--enablerepo=epel,remi,rpmforge"
end

5003-29

5003-30

6.レシピの実行

レシピが作成できましたので、プロビジョニングを行います。

$ vagrant provision
$ vagrant provision
DL is deprecated, please use Fiddle
[default] Chef 11.8.2 Omnibus package is already installed.
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-01-17T19:22:59+09:00] INFO: Forking chef instance to converge...
[2014-01-17T19:22:59+09:00] INFO: *** Chef 11.8.2 ***
[2014-01-17T19:22:59+09:00] INFO: Chef-client pid: 5808
[2014-01-17T19:23:00+09:00] INFO: Setting the run_list to ["recipe[base]", "recipe[repo]", "recipe[httpd]", "recipe[mysql]", "recipe[php54]"] from JSON
[2014-01-17T19:23:00+09:00] INFO: Run List is [recipe[base], recipe[repo], recipe[httpd], recipe[mysql], recipe[php54]]
[2014-01-17T19:23:00+09:00] INFO: Run List expands to [base, repo, httpd, mysql, php54]
[2014-01-17T19:23:00+09:00] INFO: Starting Chef Run for chef-lamp.vagrantup.com
[2014-01-17T19:23:00+09:00] INFO: Running start handlers
[2014-01-17T19:23:00+09:00] INFO: Start handlers complete.
[2014-01-17T19:23:00+09:00] WARN: Cloning resource attributes for service[mysqld] from prior resource (CHEF-3694)
[2014-01-17T19:23:00+09:00] WARN: Previous service[mysqld]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/default.rb:21:in `from_file'
[2014-01-17T19:23:00+09:00] WARN: Current  service[mysqld]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/default.rb:45:in `from_file'
[2014-01-17T19:23:23+09:00] INFO: service[mysqld] restarted
[2014-01-17T19:23:23+09:00] INFO: package[php][/php] installing php-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:25:10+09:00] INFO: package[php-mysql] installing php-mysql-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:25:21+09:00] INFO: package[php-gd] installing php-gd-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:25:44+09:00] INFO: package[php-pear] installing php-pear-1.9.4-23.el6.remi from remi repository
[2014-01-17T19:26:03+09:00] INFO: package[php-mbstring] installing php-mbstring-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:26:19+09:00] INFO: package[php-devel] installing php-devel-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:27:24+09:00] INFO: package[php-mcrypt] installing php-mcrypt-5.4.24-1.el6.remi from remi repository
[2014-01-17T19:27:50+09:00] INFO: package[php][/php] sending create action to template[php language=".ini"][/php] (delayed)
[2014-01-17T19:27:51+09:00] INFO: template[php language=".ini"][/php] backed up to /var/chef/backup/etc/php.ini.chef-20140117192751.083477
[2014-01-17T19:27:51+09:00] INFO: template[php language=".ini"][/php] updated file contents /etc/php.ini
[2014-01-17T19:27:51+09:00] INFO: package[php][/php] sending create action to template[phpinfo.php] (delayed)
[2014-01-17T19:27:51+09:00] INFO: template[phpinfo.php] created file /var/www/html/phpinfo.php
[2014-01-17T19:27:51+09:00] INFO: template[phpinfo.php] updated file contents /var/www/html/phpinfo.php
[2014-01-17T19:27:51+09:00] INFO: template[phpinfo.php] mode changed to 644
[2014-01-17T19:27:51+09:00] INFO: package[php][/php] sending restart action to service[httpd] (delayed)
[2014-01-17T19:27:54+09:00] INFO: service[httpd] restarted
[2014-01-17T19:27:54+09:00] INFO: Chef Run complete in 293.646192177 seconds
[2014-01-17T19:27:54+09:00] INFO: Running report handlers
[2014-01-17T19:27:54+09:00] INFO: Report handlers complete
[2014-01-17T19:22:59+09:00] INFO: Forking chef instance to converge...

7.動作確認

ブラウザでアクセスすると、PHPの構成情報が表示されます。

5003-33

まとめ

ここまで、LAMP環境を構築するレシピを作成し、プロビジョニングを行う方法を解説しました。CHefを用いたプロビジョニングでは、Cookbookを作成しCookbookのレシピを記述することで、サーバーの構成管理を行います。今回作成したVagrantfileとsite-cookbooksをGitなどのバージョン管理ソフトウエアで管理することで、複数のメンバーが今回作成したサーバーをローカルマシン上で利用できるようになります。今回解説した記事を参考にして、Chefプロビジョニングにチャレンジしてみては如何でしょうか。


本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。

開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!

「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。

クラウド型バグ管理・バージョン管理ソフトの「tracpath(トラックパス)」を提供しているオープングルーヴが運営しています

You Might Also Like