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

ログってなんぼ

日々のメモです

Vagrant:VMを任意の状態まで巻き戻せるsaharaプラグインを入れる

vagrant chef infra

chefのレシピを書く場合、本番に適用する前に手元のVMに対して色々試行錯誤を行うわけですが、この作業が非常に楽になるプラグインがあるので導入しました。

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

jedi4ever/sahara はてなブックマーク - jedi4ever/sahara

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

VMをある程度変更する

今回の目的はchefのレシピのための試行錯誤なので、VMにknife solo prepare済みの状態までまずVMの状態を進めます

起動

$ vagrant up

knife solo prepare

$ knife solo prepare localvm
・
・
Thank you for installing Chef!

ホストPCからsandbox mode をonに

$ vagrant sandbox on
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

現在の状態をコミット

$ vagrant sandbox commit
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

状態のチェック

[vagrant@localhost ~]$ che
checkmodule  checkpolicy  chef-apply   chef-client  chef-shell   chef-solo
[vagrant@localhost ~]$ htop
-bash: htop: コマンドが見つかりません

chef関連モジュールはインストールされています。 レシピから入れる予定のhtopコマンドはまだ入っていません。

レシピを流す

okisanjpユーザーを作り、htopコマンドを導入するレシピを流します

$ knife solo cook localvm
・
・
Recipe: ops-tools::default
  * package[htop] action install
    - install version 1.0.1-2.el6 of package htop


Running handlers:
Running handlers complete

終了しました。

確認してみる

[vagrant@localhost ~]$ vagrant ssh
Last login: Fri Jun  6 20:05:17 2014 from 10.0.2.2

[vagrant@localhost ~]$ which htop
/usr/bin/htop

[vagrant@localhost ~]$ id okisanjp
uid=501(okisanjp) gid=2300(sysadmin) 所属グループ=2300(sysadmin)

入ってますね

状態を巻き戻してみる

commitした状態までサーバーの状態を巻き戻すにはrollbackサブコマンドを使います。

$ vagrant sandbox rollback
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

再度ログインして確認

$ vagrant ssh
Last login: Fri Jun  6 20:00:01 2014 from 10.0.2.2

[vagrant@localhost ~]$ che
checkmodule  checkpolicy  chef-apply   chef-client  chef-shell   chef-solo

[vagrant@localhost ~]$ which htop
/usr/bin/which: no htop in (/usr/local/rvm/gems/ruby-2.0.0-p481/bin:/usr/local/rvm/gems/ruby-2.0.0-p481@global/bin:/usr/local/rvm/rubies/ruby-2.0.0-p481/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/rvm/bin:/home/vagrant/bin)

[vagrant@localhost ~]$ id okisanjp
id: okisanjp: そのようなユーザは存在しません

chef関連ツールは導入されていて、htopコマンドもokisanjpユーザーも存在しない状態(commitした状態)まで巻き戻りました。

sandbox modeを抜ける

VMを再度通常の状態に戻すには

$ vagrant sandbox off

これだけです

いいですね

これまでは、vagrant destroyしてから再度vagrant upしていましたが作業効率が格段に上がりました。

これでテンポよくレシピの試行錯誤が出来ますね