Vagrant+ChefでMySQL+Ryby2環境構築
1. 前提
・ VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads
・Vagrantのインストール
http://www.vagrantup.com/downloads.html
・Vagrantのインストール確認
$ vagrant -v Vagrant 1.4.3
・RubyバージョンとGem確認
$ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] $ gem list | grep chef chef (11.8.2) $ gem list | grep knife knife-solo (0.4.1) $ gem list | grep berks berkshelf (2.0.13)
2. セットアップ
$ knife solo init sandbox-chef-cookbooks
$ cd sandbox-chef-cookbooks
$ berks init
3. site-cookbooksの作成
・iptablesの設定をするcookbookeを作成する
$ knife cookbook create site_simple_iptables -o site-cookbooks/
・設定
$ vim site-cookbooks/site_simple_iptables/recipes/default.rb -- default.rb # Reject packets other than those explicitly allowed simple_iptables_policy "INPUT" do policy "DROP" end # The following rules define a "system" chain; chains # are used as a convenient way of grouping rules together, # for logical organization. # Allow all traffic on the loopback device simple_iptables_rule "system" do rule "--in-interface lo" jump "ACCEPT" end # Allow any established connections to continue, even # if they would be in violation of other rules. simple_iptables_rule "system" do rule "-m conntrack --ctstate ESTABLISHED,RELATED" jump "ACCEPT" end # Allow SSH simple_iptables_rule "system" do rule "--proto tcp --dport 22" jump "ACCEPT" end # Allow HTTP, HTTPS simple_iptables_rule "http" do rule [ "--proto tcp --dport 80", "--proto tcp --dport 443" ] jump "ACCEPT" end # Allow MySQL simple_iptables_rule "mysql" do rule "--proto tcp --dport 3306" jump "ACCEPT" end # Allow Rails simple_iptables_rule "mysql" do rule "--proto tcp --dport 3000" jump "ACCEPT" end
4. Berksfile
・サードパーティのcookbook(iptable + Ruby + MySQL)を使う設定を追加する
$ vim Berksfile site :opscode cookbook 'simple_iptables', git:"git://github.com/dcrosta/cookbook-simple-iptables.git" cookbook 'site_simple_iptables', path: './site-cookbooks/site_simple_iptables' cookbook 'ruby_build' cookbook 'rbenv', github: "fnichol/chef-rbenv" cookbook 'mysql'
・iptable設定のcookboosとサードパーティのcookbookをインストール
$ berks install --path cookbooks
5. Vagrantfile
chef.json = { :mysql => { :server_root_password => 'rootpass', :server_debian_password => 'debpass', :server_repl_password => 'replpass' }, :rbenv => { :user_installs => [{ :user => "vagrant", :rubies => ["2.0.0-p353"], :global => "2.0.0-p353", :gems => { "2.0.0-p353" => [ {:name => "bundler"} ] } }] } }
・vagrantの起動
$ vagrant up