目標
- vagrant + chef-solo で LAMP(PHP)の仮想環境を作成
- 簡単な動作確認
環境
ローカル
- Windows 7(64bit)
- VirtualBox 4.3.6
- Vagrant 1.4.3
- ruby 1.9.3
- chef 11.8.2
- Berkshelf 2.0.13
仮想環境
- CentOS 6.5
- apache 2.2.15
- MySQL 5.1.71
- php 5.3.3
手順
VirtualBoxのインストール
Vagrantのインストール
rubyのインストール
RubyInstallerとDEVELOPMENT KITの両方が必要
http://rubyinstaller.org/
Windowsで2.0を使おうとすると問題が多発するので、1.9を強くお勧めします!
RubyInstaller実行
インストール先はc:\Ruby
にしました。
DEVELOPMENT KITのインストール
アーカイブを実行すると、解凍先を聞かれるので、好きな場所(インストール先になります)に解凍
c:\RubyDevKit
にしました
$ cd c:\RubyDevKit
$ ruby dk.rb init
$ ruby dk.rb install
chefのインストール
$ gem install -V chef --no-ri --no-rdoc
Berkshelfのインストール
$ gem install -V berkshelf --no-ri --no-rdoc
仮想環境イメージファイル選択
仮想環境の初期状態となるイメージファイル(box)を選択
http://www.vagrantbox.es/
VirtualBox用の最新版ということでCentOS 6.5 x86_64
にしました。
Vagrant初期設定
:: vagrantの作業フォルダを作成
$ mkdir c:\vagrant
$ cd c:\vagrant
:: boxを設定
$ vagrant box add centos https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
:: Vagrantfileを作成
$ vagrant init centos
:: 起動だけなら既に出来る状態です。簡単ですね!
$ vagrant up
:: 仮想環境を停止するコマンド
$ vagrant halt
:: 仮想環境を削除するコマンド(VirtualBoxのインスタンスが消えるだけです)
$ vagrant destroy
vagrantにchef用のプラグインを入れる
vagrant-omnibus
は、仮想環境にchefをインストールするプラグイン。
vagrant-berkshelf
は、vagrantとberkshelfを連携させるプラグイン。
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-berkshelf
Berkshelfの設定
opscodeからダウンロードするcookbookを設定
site :opscode
cookbook 'apache2'
cookbook "mysql"
cookbook 'php'
cookbook 'vim'
Vagrantの設定
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos"
config.vm.hostname = "centos"
config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box"
# host(127.0.0.1)の8082番を、guest(仮想環境)の80番にポートフォワードする
config.vm.network :forwarded_port, guest: 80, host: 8082
# chefの設定
config.vm.provision :chef_solo do |chef|
chef.add_recipe "apache2"
chef.add_recipe "apache2::mod_php5"
chef.add_recipe "mysql"
chef.add_recipe "mysql::client"
chef.add_recipe "mysql::server"
chef.add_recipe "php"
chef.add_recipe "vim"
chef.json = {
:apache => {
:default_site_enabled => true
},
:mysql => {
:server_root_password => "123456",
:server_repl_password => "123456",
:server_debian_password => "123456"
}
}
end
# 仮想環境にインストールするchefのバージョン
config.omnibus.chef_version = :latest
# berkshelfを有効にする
config.berkshelf.enabled = true
end
仮想環境を起動する
::仮想環境の立ち上げからchef-solo実行まで行ってくれる。
$ vagrant up
仮想環境に接続
:: sshコマンド発行まで自動でやってくれる。
:: しかし、windowsはsshが入っていないので、接続情報が出力されて終わる。
$ vagrant ssh
:: 接続情報を出力するコマンド
$ vagrant ssh-config
好きな手段で接続してください。
teratermを使う場合は次のどちらかがオススメです。
(1)TTLファイルで接続
ttlファイルを読み込ませるのはttpmacro.exe
です。(ttermpro.exe
ではない)
(2)sshコマンドを代替するバッチファイルでteratermを起動
ssh.bat
を作成し、パスを通す。
https://gist.github.com/sampleb3/8631514#file-ssh-bat
こうしておけば、$ vagrant ssh
でteratermによる接続まで一気にやってくれる。
※こちらを参考にさせて頂きました。
vagrant ssh を Windows でもできるように ssh コマンド作った(teraterm 編) / 虫けらロック
簡単な動作確認
mysql
Vagrantfile
で指定した通り、root
のパスワードが設定されている。
$ mysql -uroot -p123456
$ exit
apache + php
デフォルトのDocumentRoot/var/www/html
で起動しているので、phpinfo.php
を作成してアクセスしてみる。
$ sudo vim /var/www/html/phpinfo.php
<?php
phpinfo();
?>
ブラウザで http://127.0.0.1:8082/phpinfo.php にアクセス。
phpinfoが表示される。
後始末
仮想環境を止める
$ vagrant halt
仮想環境を削除する
$ vagrant destroy
GitHub
ローカルのvagrantフォルダのリポジトリを公開します。
https://github.com/sampleb3/vagrant-lamp