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をインストールしたいと思います。
ちょっと長くなってきちゃいましたので、続きは次回行いたいと思います。
使用環境
- ホストOS: Windows7 x64
- Cygwin : Cygwin64
- ruby : 2.1.2p95
- VirtualBox: 4.3.10
- Vagrant: 1.5.2
- CoffeeScript : 1.7.1