vagrantでやり直しを可能にする

間違えてファイルを消してしまった。

パッケージをインストールたら動かなくなった。元に戻したい。

 

そういった前の状態に戻したいというときに使えるのがsaharaプラグインです。

 

saharaはロールバック、コミットすることができるvagrantプラグインです。

インストール

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

インストールできたか確認

$ vagrant plugin list
sahara (0.0.16)
vagrant-login (1.0.1, system)
vagrant-share (1.0.1, system)
vagrant-vbguest (0.10.0)

vagrant fileの作成

$ Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :centos2 do |dev|
    dev.vm.box               = "chef/centos-6.5"
    dev.vm.hostname          = "dev102"
    dev.vm.network :private_network, ip: "10.0.0.102"
  end
end

コミットとロールバックの実験

# 構築
$ vagrant up centos2
 
$ vagrant sandbox on centos2
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 
# vimのインストール
$ vagrant ssh centos2
[vagrant@dev102 ~]$ vim --version
-bash: vim: command not found
[vagrant@dev102 ~]$ sudo yum install vim
[vagrant@dev102 ~]$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)
[vagrant@dev102 ~]$ exit
 
# コミット
$ vagrant sandbox commit centos2
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 
# screenのインストール
$ vagrant ssh centos2
[vagrant@dev102 ~]$ screen -v
-bash: screen: command not found
[vagrant@dev102 ~]$ sudo yum install screen
[vagrant@dev102 ~]$ screen -v
Screen version 4.00.03 (FAU) 23-Oct-06
[vagrant@dev102 ~]$ exit
 
$ vagrant sandbox rollback centos2
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 
# 確認
$ vagrant ssh centos2
[vagrant@dev102 ~]$ screen -v
-bash: screen: command not found
[vagrant@dev102 ~]$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)
$ vagrant sandbox off centos2
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

インストールし後にcommitにしたvimは入っています。

インストールし後にrollbackしたscreenは入ってません。

便利!

参考URL

https://github.com/jedi4ever/sahara

kindle版の457ページあたりの『応用:OSのロールバックを可能にする - sahara』のところ