Program LOG

勉強した内容をまとめ中。。。間違ってたら教えて。。。

ChefでSass+Compass+Coffee+Gruntの実行環境を作る(1)

さて、前回の記事でWindows+CygwinユーザーにはNodejsの実行がしづらいので、
Vagrant上に作ってしまえばいいんじゃないのかと思いました。
ただ、開発の都度セットアップするのがめんどいので、
Chefで流せるようにしちゃえばいいんだと思い、今回作成してみました!
今後の為に・・・記事に残しておきたいと思います。

Vagrantの環境を作成

まずは、Vagrantを作成する環境作り、これはいままで通りなので、コマンドだけ残しておきます。

$ mkdir develop
$ cd ./develop
$ vagrant init centos
$ vi ./Vagrantfile
vi) config.vm.network "private_network", ip: "192.168.33.14"
$ vagrant up
#鍵認証
$ vagrant ssh-config --host develop >> ~/.ssh/config
#接続テスト
$ ssh develop
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ exit
logout
Connection to 127.0.0.1 closed.

#リポジトリの作成と仮想マシンにchefを用意
$ knife solo init chef-lepo
$ cd chef-lepo
$ knife solo prepare develop

サーバーサイドを先に構築

今回は、以前作成したPHP+Mysql+Apacheのchefを流用して、サーバーサイドを先に構築しておきます。
作成した内容は、下記ページを確認してください。
windows+CygwinでChef - 目次 - Program LOG

今作成したchef-lepoディレクトリ内の「site-cookbooks」に「develop」クックブックをコピーしておきます。
次に、以前作成したものを実行しておきましょう。
nodeのdevelop.jsonの編集も忘れずに!
準備が出来たら、いつものを実行します。

$ knife solo cook develop
・・・中略・・・
Running handlers:
Running handlers complete

Chef Client finished, 21/21 resources updated in 57.005617181 seconds

新しくレシピを作成する。

フロントサイド用のレシピを作成します。
まず、rubyのバージョンが低いのが気になるので、rubyのバージョンをrbenvを入れて、
バージョン管理出来るようにしたいと思います。
今回のレシピは、「ruby.rb」としました。

rbenvを使ってrubyをインストールする。

まずは、gitクローンを行います。
その為、gitをインストールしておく必要がありますので、gitからインストールしましょう。

#gitのインストール
package "git" do
	action :install
end

#.rbenvをcloneする
git "/home/vagrant/.rbenv" do
  repository "https://github.com/sstephenson/rbenv.git"
  revision   "master"
  user       "vagrant"
  group      "vagrant"
  action     :sync
end
# セットアップを行う
bash "rbenv_setup" do
  not_if "ls /root/.rbenv_setup"
  user "root"
  code <<-EOL
   echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
   echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
   exec $SHELL -l
  EOL
end
#判定用
bash "rbenv_setup_check" do
  not_if 'ls /root/.rbenv_setup'
  user        "root"
  code <<-EOL
    echo "rbenv_setup" > /root/.rbenv_setup
    chown 400 /root/.rbenv_setup
  EOL
end

#ディレクトリ~/.rbenv/plugins/を作成して、このディレクトリにruby-buildをgit cloneする。
directory "/home/vagrant/.rbenv/plugins" do
  owner  "vagrant"
  group  "vagrant"
  action :create
end
git "/home/vagrant/.rbenv/plugins/ruby-build" do
  repository "https://github.com/sstephenson/ruby-build.git"
  revision   "master"
  user       "vagrant"
  group      "vagrant"
  action     :sync
end

これでrbenvはセットアップされるはずですので、実行確認してみましょう。

$ knife solo cook develop
・・・中略・・・
Starting Chef Client, version 11.12.4
Compiling Cookbooks...
Converging 1 resources
Recipe: develop::ruby
  * package[git] action install
    - install version 1.7.1-3.el6_4.1 of package git
  * git[/home/vagrant/.rbenv] action sync
    - clone from https://github.com/sstephenson/rbenv.git into /home/vagrant/.rbenv
    - checkout ref 13a474c4e9c3305179b364723349fc49b3e935e3 branch master

  * bash[rbenv_setup] action run
    - execute "bash"  "/tmp/chef-script20140622-4950-1q9pew3"

  * bash[rbenv_setup_check] action run
    - execute "bash"  "/tmp/chef-script20140622-4950-10m9ydg"

  * directory[/home/vagrant/.rbenv/plugins] action create
    - create new directory /home/vagrant/.rbenv/plugins
    - change owner from '' to 'vagrant'
    - change group from '' to 'vagrant'

  * git[/home/vagrant/.rbenv/plugins/ruby-build] action sync
    - clone from https://github.com/sstephenson/ruby-build.git into /home/vagrant/.rbenv/plugins/ruby-build
    - checkout ref d3d5fe03dcff305a442688d3f7322b6b29924cd4 branch master

念のため、バージョン確認をしておきたいと思います。

$ ssh develop
Last login: Sun Jun 22 05:57:05 2014 from 192.168.33.1
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ rbenv -v
rbenv 0.4.0-98-g13a474c

問題なくはいってました!
次は、rubyをインストールしておきます。

#opensslのインストール
package "openssl-devel" do
  action :install
end
#rbenvで2.0.0-p481のインストール
bash "rubyp481_install" do
  not_if { ::File.exists? "/home/vagrant/.rbenv/versions/2.0.0-p353" }
  user "root"
  code <<-EOL
   su vagrant -l -c 'rbenv install 2.0.0-p481'
   su vagrant -l -c 'rbenv rehash'
   su vagrant -l -c 'rbenv global 2.0.0-p481'
  EOL
end

それでは実行したいと思います。

$ knife solo cook develop
・・・中略・・・
  * bash[rubyp481_install] action run
    - execute "bash"  "/tmp/chef-script20140622-7477-rb2cfk"


Running handlers:
Running handlers complete

正常に入ったようです。
userがvagrantじゃないとダメなのに、rootでしか実行されなくてはまりましたw
しょうがないので、上記のように実行する事に!
これで、rubyのバージョンが変わってればOKって事ですね!

$ ssh develop
[vagrant@localhost ~]$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

これで、正常にインストールが完了しました。

gemでsassとcompassをインストール!

さて、それでは、rubyが入ったので、sassとcompassをインストールしたいと思います。
また、今回は、grunt.rbというレシピを作成しました。
こちらのファイルで、sassやcompassのインストールをしていきたいと思います。
下記を書いていきます。

%w[sass compass].each do |pkg|
	gem_package pkg do
	    action :install
	end
end

nodeの設定を変更して、早速実行しましょう!

$ knife solo cook develop
・・・中略・・・
Starting Chef Client, version 11.12.4
Compiling Cookbooks...
Converging 2 resources
Recipe: develop::grunt
  * gem_package[sass] action install
    - install version 3.3.8 of package sass

  * gem_package[compass] action install
    - install version 0.12.6 of package compass


Running handlers:
Running handlers complete

Chef Client finished, 2/2 resources updated in 52.555326905 seconds

無事に入ったようなので、バージョンを確認しておきたいと思います。

$ ssh develop
Last login: Sun Jun 22 08:10:37 2014 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ sass -v
Sass 3.3.8 (Maptastic Maple)
[vagrant@localhost ~]$ compass -v
Compass 0.12.6 (Alnilam)
Copyright (c) 2008-2014 Chris Eppstein
Released under the MIT License.
Compass is charityware.
Please make a tax deductable donation for a worthy cause: http://umdf.org/compass

ここまでで取り合えず、sass+compassまではインストールできました。
引き続き、CoffeeとGruntをインストールしたいと思います。
ちょっと長くなってきちゃいましたので、続きは次回行いたいと思います。

使用環境