秘伝のタレ状態で昔作ったVagrant環境を使いまわしていましたが
vagrantやVirtualBoxのバージョンを上げた所動かなくなったので
あらたに作り直しました。
Mac OSXへの環境構築を行います。
Vagrant
http://www.vagrantup.com/downloads.html
VirtualBox
https://www.virtualbox.org/wiki/Downloads
chef
http://www.getchef.com/downloads/chef-dk/
それぞれdmgでインストールしてください
knife soloを利用したいので
$chef gem install knife-solo
仮想環境にchefの設定を行うプラグインvagrant-omnibusも準備します。
$vagrant plugin install vagrant-omnibus
knife solo を使って初期化します。
$knife solo init centosphp(プロジェクト名等) Creating kitchen... Creating knife.rb in kitchen... Creating cupboards... Setting up Berkshelf...
引き続きphp等のレシピを作成します。
$cd centosphp $knife cookbook create localedef -o site-cookbooks/ $knife cookbook create apache -o site-cookbooks/ $knife cookbook create php -o site-cookbooks/
それぞれ下記ファイルを修正します。
CentOSの日本語化
/site-cookbooks/localedef/recipes/default.rb
bash 'localedef' do code 'sudo localedef -f UTF-8 -i ja_JP ja_JP.UTF-8' end
Apacheの設定
ドメインでアクセスさせるためにヴァーチャルホストを設定します。
/site-cookbooks/apache/recipes/default.rb
%w[httpd httpd-devel mod_ssl ].each do |pkg| package "#{pkg}" do action :install end end service 'httpd' do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end template "/etc/httpd/conf/httpd.conf" do source "httpd-2.2.conf.erb" end template "/etc/httpd/conf.d/php.vm.conf" do source "php.vm.conf.erb" end
/site-cookbooks/apache/templates/default/httpd-2.2.conf.erb
設定ファイル一回仮想環境で作成したもの等をコピーして
NameVirtualHost *:80
の部分のコメントを外しました。
php.vmというドメインでアクセスさせます。
ドキュメントルートは後で設定するVagrantfileの中のsyncfolderとの関連で
適時修正してください。
ここでは仮想サーバの/var/www/src/php/public
をドキュメントルートとします。
/site-cookbooks/apache/templates/default/php.vm.conf.erb
<VirtualHost *:80> ServerName php.vm DocumentRoot /var/www/src/php/public <Directory /var/www/src/php/public> Options All AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
remiからPHPをインストールしたいのでrepoの登録を行ってからPHPのインストールをします。
/site-cookbooks/php/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']}" 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']}" end %w[ php php-pdo php-mbstring php-mysqlnd].each do |pkg| package "#{pkg}" do action :install options "--enablerepo=remi,epel,remi-php55" end end
attributeにremiとepelのrpmのダウンロード先を指定します。
/site-cookbooks/php/attributes/default.rb
default['remi']['file_name'] = "remi-release-6.rpm" default['remi']['remote_uri'] = "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm" default['epel']['file_name'] = "epel-release-6-8.noarch.rpm" default['epel']['remote_uri'] = "http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"
Vagrantfileの修正
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "chef/centos-6.5" config.vm.network "private_network", ip: "192.168.33.104" config.vm.synced_folder "./src", "/var/www/src", :create => true, :owner => 'vagrant', :group => 'vagrant', :mount_options => ['dmode=777', 'fmode=775'] config.omnibus.chef_version = :latest config.vm.provision "chef_solo" do |chef| chef.cookbooks_path = "./site-cookbooks" chef.add_recipe "localedef" chef.add_recipe "apache" chef.add_recipe "php" end end
php.vmでアクセスできるようにhostsの設定
$ sudo vi /etc/hosts
Vagrantfileで指定したIPを記述します
192.168.33.104 php.vm
後から手順を拾ったので、そのままで動かなかったらすいません
利用バーション
VirtualBox 4.2.36
Vagrant 1.7.2
Chef: 12.3.0
参考にしたページ
http://www.d-wood.com/blog/2014/09/29_6938.html
http://shusatoo.net/infra/chef/vagrant-chef-solo-php-mysql-development-environment/
http://dqn.sakusakutto.jp/2014/05/mac_osx_linux_chef_knife_berkshelf.html
その他
ありがとうございました。
Published by