Vagrant | Vagrant + Itamae で middleman 環境を構築し、 Vagrant Share で Vagrant Could に公開する #vagrant #itamae #middleman
概要
Vagrant + Itamae で middleman 環境を構築し、 Vagrant Share で Vagrant Could に公開します。
- Itamae: 国産プロビジョニングツール。Chef の軽量版のような立ち位置。
- middleman: Ruby の 静的サイト構築フレームワーク
前提
- Vagrant Cloud にユーザー登録しておきます
- Vagrant / Itamae インストール済み
手順
作業用ディレクトリ + Vagrantfile ひな型生成
$ mkdir middleman
$ cd middleman
$ vagrant init -m
$ vi Vagrantfile
Vagrantfile 編集
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "middleman" do |web|
web.vm.provider :virtualbox do |vb|
vb.name = "middleman"
end
web.vm.hostname = "middleman"
web.vm.box = "hashicorp/precise64"
# middleman のデフォルトポートは 4567
config.vm.network :forwarded_port, guest: 4567, host: 4567
end
end
Gemfile 編集
- rutan さんの
itamae-plugin-recipe-rtn_rbenv
で rbenv + ruby 環境を構築
source "https://rubygems.org"
gem 'itamae-plugin-recipe-rtn_rbenv'
node.js の作成・編集
{
"rtn_rbenv": {
"user": "vagrant",
"versions": {
"2.1.2": [
{
"name": "bundler",
"version": "1.7.3",
"force": true
},
"middleman"
]
},
"global": "2.1.2"
}
}
middleman.rb
Itamae のレシピを作成
execute "apt-get update" do
command "sudo apt-get update"
end
package "make" do
action :install
end
include_recipe 'rtn_rbenv::user'
仮想環境起動
$ vagrant up
Itamae プロビジョニング
$ vagrant ssh-config --host middleman
$ bundle exec itamae ssh --vagrant -h middleman --node-json node.json middleman.rb
# 各種ログ
# インストール内容の確認
$ vagrant ssh
vagrant@middleman:~$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
vagrant@middleman:~$ middleman v
Middleman 3.3.7
middleman でサイトテンプレート生成
$ middleman init itamae_middleman
middleman 起動
$ cd itamae_middleman
$ vi Gemfile
# middleman-livereload をコメントアウト
$ bundle installs
# ここから
$ sudo apt-get install build-essential gcc g++ -y
$ gem install ejs
$ gem install eco
$ sudo apt-get install nodejs
# ここまで試行錯誤しながらだったので不要なものがあるかも
$ middleman server
middleman ローカル確認
vagrant share
$ vagrant login
# user, pass を入力
$ vagrant share
$ vagrant login --logout
share 実行時に表示された URL にアクセス
補足
- Firewall の設定によって、
vagrant share
が失敗するケースがある