Edited at

Vagrant + Chef + chef-wp-cli を使って WordPress サイトを構築してみる

More than 5 years have passed since last update.

とりあえず、画面が表示されるまでを目標に


テスト環境

Mac: 10.8.5

Ruby: 1.9.3

Vagrant: 1.3.3

Chef: 11.4.4


クックブック

クックブック自体は、既に海外の方が作られている。

https://github.com/francescolaffi/chef-wp-cli

ただ、このクックブックは元々 Chef 10 系の物の為、11 系で動かすにはレシピを修正する必要あり。

↓動かなくなった理由はこちら

Chef 11 In-Depth: Attributes Changes

http://www.opscode.com/blog/2013/02/05/chef-11-in-depth-attributes-changes/

↓修正してみたのがこちら

https://github.com/wakuworks/chef-wp-cli


プロビジョニング


ディレクトリ構造


.
├── Vagrantfile
└── chef
├── Berksfile
├── cookbooks
├── data_bags
├── nodes
├── roles
└── site-cookbooks

多分こんな感じ


chef/Berksfile

site :opscode

cookbook 'wp', git: 'https://github.com/wakuworks/chef-wp-cli.git'


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "CentOS-6.4"
config.vm.box_url = `uname -a`.index("x86_64") != nil ?
"http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box" :
"http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20130427.box"
config.vm.network :private_network, ip: "192.168.33.10"

config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "512"]
end

config.vm.provision :shell, :inline => <<-EOT
sudo /sbin/iptables -F && sudo /etc/init.d/iptables save
if ! type rsync >/dev/null 2>&1; then
yum install -y rsync
fi
EOT

config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "chef/cookbooks"
chef.add_recipe "php::module_mysql"
chef.add_recipe "apache2"
chef.add_recipe "wp::apache" # 現在は wp::apache のレシピしかない
chef.json = {
"wp" => {
"installs" => {
"wptest1.com" => {
"url" => "wptest1.com",
"title" => "my theme test"
},
"wptest2.com" => {
"url" => "wptest2.com",
"title" => "my theme test",
"locale" => "ja" # 日本語化
}
}
},
"mysql" => {
"server_root_password" => "iloverandompasswordsbutthiswilldo",
"server_repl_password" => "iloverandompasswordsbutthiswilldo",
"server_debian_password" => "iloverandompasswordsbutthiswilldo"
}
}
end

# vagrant-berkshelf をインストールしている状態で、
# 下記の二行のコメントアウトを外すと自動的にダウンロードしてくれるのだが、
# Vagrant 1.3.3 + vagrant-berkshelf 1.3.3 の環境だとエラーになる。
#
# config.berkshelf.enabled = true
# config.berkshelf.berksfile_path = "chef/Berksfile"
#
# CookbookNotFound error on Vagrant 1.3.3 with Git and GitHub location
# https://github.com/RiotGames/vagrant-berkshelf/issues/93
#
# 仕方ないので、chef ディレクトリに移動して直接ダウンロードを実行する。
# $ cd chef
# $ berks install --path=cookbooks
end


プロビジョニングが成功すると、/var/www/wptest1.com, /var/www/wptest2.com が出来上がる。

ディレクトリのパーミッションは、出来上がった状態のままだとアクセス出来ないので、適切な物に変更する。

後は Mac 側の hosts を、下記の様に変更してからブラウザでアクセス。

192.168.33.10 wptest1.com

192.168.33.10 wptest2.com


結果

cap.png


参考

Vagrantfile サンプル