読者です 読者をやめる 読者になる 読者になる

時と場合によりけり

日々のアップデートとイノベーションに翻弄され彷徨える IT エンジニアの覚書

Vagrant のプラグイン sahara をインストールする

Vagrant Mac Ruby

概要

Vagrant で入れておくと便利なプラグインをインストールしてみます。VirtualBoxVagrant のインストールについては、以下のエントリーをご参照ください。

stangler.hatenablog.com

ハードウェア

  • マシン: Macbook Pro Early 2011
  • OS: macOS 10.12 Sierra
  • メモリ: 16 GB
  • ストレージ: SSD 512 GB

ソフトウェア

ディレクトリおよびファイル構成

% pwd
/Users/xxxxx/Vagrant/dev-basic

% tree
.
├── Gemfile
├── Gemfile.lock
└── Vagrantfile

手順

  1. gemset 作成
  2. Bundler インストール
  3. Vagrant プラグイン sahara インストール

gemset

gemset について

後で説明する Vagrantプラグイン sahara をインストールする際に Ruby のライブラリが必要となります。そのために、gemset を作成しておきます。rbenv については、以下のエントリーをご参照ください。

stangler.hatenablog.com

gemset 作成

rbenv で管理している Ruby 2.3.1 を使用した basic-set という名前のセットを作ります。

% rbenv gemset create 2.3.1 basic-set

セット適用

仮想マシンを設定するために、まず、Vagrant という名前のディレクトリを作成します。そして、その Vagrant ディレクトリの中に、適当な名前(ここでは、dev-basic )でディレクトリを作成し、上で作成した basic-set を適用します。

% cd
% pwd /User/xxxxxx
% mkdir Vagrant
% cd Vagrant
% mkdir dev-basic
% cd dev-basic
% echo >.rbenv-gemsets basic-set

このディレクトリでセットが有効になっているかどうか確認してみます。

% rbenv gemset active
basic-set global

gem 一覧

作成した basic-set にデフォルトで入っていた gem を確認してみます。

% rbenv exec gem list
*** LOCAL GEMS ***

bigdecimal (1.2.8)
did_you_mean (1.0.0)
io-console (0.4.5)
json (1.8.3)
minitest (5.8.3)
net-telnet (0.1.1)
power_assert (0.2.6)
psych (2.0.17)
rake (10.4.2)
rdoc (4.2.1)
test-unit (3.1.5)

.gemrc 作成

gem をインストールしたりアップデートするときに、ドキュメントも同梱されると、時間がかかります。.gemrc に同梱しないように予め設定しておきます。

% vim ~/.gemrc
install: --no-document
update: --no-document

Bundler

Bundler とは

Bundler は、Ruby のプロジェクトを作成したときにインストールした gem を管理するための仕組みです。Bundler 自体も gem です。

Bundler: The best way to manage a Ruby application's gems

Bundler インストール

先ほど作成した dev-basic ディレクトリに Bundler をインストールします。

% cd dev-basic
% rbenv exec gem install bundler
% rbenv rehash

gem 一覧

再び gem を一覧を表示してみましょう。

% rbenv exec gem list
*** LOCAL GEMS ***

bigdecimal (1.2.8)
bundler (1.13.2)
did_you_mean (1.0.0)
io-console (0.4.5)
json (1.8.3)
minitest (5.8.3)
net-telnet (0.1.1)
power_assert (0.2.6)
psych (2.0.17)
rake (10.4.2)
rdoc (4.2.1)
test-unit (3.1.5)

bundler (1.13.2) が新たに追加されています。

確認

コマンドで Bundler のバージョンを確認してみます。

% rbenv exec bundle -v
Bundler version 1.13.2

sahara

sahara とは

OS の状態を記録する Vagrantプラグイン。OS を設定しているとき、ある時点に戻りたくなることが、よくあります。そんなときに力を発揮するのが、このプラグインです。sahara のロールバック機能を使えば、簡単に過去の設定に遡ることができます。

GitHub - jedi4ever/sahara: a plugin for vagrant that allows you manage a sandbox state

Gemfile 作成

bundle init コマンドで Gemfile を生成します。

% rbenv exec bundle init

次に生成された Gemfile に sahara を追加します。

% vim Gemfile
# frozen_string_literal: true
source "https://rubygems.org"

gem "sahara"

sahara gem インストール

sahara の gem をインストールします。これがないと Vagrant の sahara プラグインを稼働させることができません。

% rbenv exec bundle install
% rbenv rehash

gem 一覧

再び gem を一覧を表示してみましょう。

% rbenv exec gem list
*** LOCAL GEMS ***

bigdecimal (1.2.8)
bundler (1.13.2)
did_you_mean (1.0.0)
io-console (0.4.5)
json (1.8.3)
minitest (5.8.3)
net-telnet (0.1.1)
open4 (1.3.4)
Platform (0.4.0)
popen4 (0.1.2)
power_assert (0.2.6)
psych (2.0.17)
rake (10.4.2)
rdoc (4.2.1)
sahara (0.0.17)
test-unit (3.1.5)

sahara (0.0.17) がありました。

Vagrant プラグイン確認

デフォルトで入っているプラグインを確認してみます。

% vagrant plugin list
vagrant-share (1.1.5, system )

vagrant-share というプラグインのみインストールされています。

Vagrant の sahara プラグインインストール

ようやく本体のインストールです。

% vagrant plugin install sahara
Installing the 'sahara' plugin. This can take a few minutes...
Installed the plugin 'sahara (0.0.17)'!

プラグインのリストを確認してみます。

% vagrant plugin list
sahara (0.0.17)
vagrant-share (1.1.5, system )

無事インストールできました。

sahara の使い方

sandbox モードに入る(仮想マシンを再起動しても有効)

% vagrant sandbox on

sandbox を開始時点にロールバックする

% vagrant sandbox rollback

sandbox モードの終了(この時点で commit していないものは消える)

% vagrant sandbox off

sandbox の内容を恒久的に反映

% vagrant sandbox commit

現在 sandbox モードかどうかを確認する

% vagrant sandbox status

以上です。