Vagrantでクリーンなマシンを手に入れる
ChefのクックブックやAnsibleのPlaybookを作る時,ミドルウェアの検証を行いたい時など,クリーンなマシンが必要となることが多くあると思います.
プライベートクラウドをもっているところならそれを使えばいいと思いますが,プライベートクラウド作るのは一手間かかります.
そこで,Vagrantでクリーンなマシンを作って検証を行える環境を作りたいと思います.
作成するマシンは
Ubuntu Server 12.04 LTS
boxファイルの追加
まず,boxファイルをvagrantに追加します.
追加するboxファイルはvagrant公式のものを使用します.
$ vagrant box add clean http://files.vagrantup.com/precise64.box
ダウンロードにしばらくかかるので辛抱強く待ちます.
仮想マシンの設定
作業ディレクトリに移動しVagrantfileを作成します.
$ mkdir -p ~/vagrant/clean $ cd ~/vagrant/clean $ vagrant init clean
Vagrantfileができていると思います.
# config.vm.network :private_network, ip: "192.168.33.10"
のコメントを消して,ホストマシン側からアクセスできるようにします.
仮想マシンの起動/sshログイン
仮想マシンを起動します.
$ vagrant up
$ vagrant ssh
通常のsshログインもできます.
ssh -i ~/.vagrant.d/insecure_private_key vagrant@192.168.33.10
これで,クリーンなマシンが手に入ったので,いろいろな検証が可能となりました.
クリーンな環境の復元
クリーンなマシンにいろいろなミドルウェアをインストールした結果,ライブラリやミドルウェア依存関係などがわからなくなることがあります.
そういう場合にはVagrantのdestroyコマンドを使ってマシンを最初の状態に戻すことができます.
virus.exe
というファイルを作って,クリーンな環境を壊してみます.
$ vagrant ssh $ touch ~/virus.exe $ exit
現在の仮想マシンを壊して,クリーンな環境に戻します.
$ vagrant destroy $ vagrant up $ vagrant ssh
boxファイルの最初のクリーン状態に戻っています.
ある時点のマシンの状態を保存しておき,そこから再開する.
とりあえず最低限のライブラリやミドルウェアをインストールしたあとに,検証対象のミドルウェアをインストールしたいことがあります.
なおかつ,複数のバージョンをインストールしてみて,検証してみたい場合等も多いと思います.
こんな場合には,Vagrantのsandboxコマンドが便利です.
1st.txt
というファイルが作ってある状態を保存しておき,その状態に戻れるようにします.
$ vagrant up $ vagrant ssh $ touch ~/1st.txt $ exit
この状態のマシンのスナップショットを作成します.
$ vagrant sandbox on $ vagrant sandbox commit
これで1st.txt
が存在する状態のマシンのスナップショットが作成されました.
ここで2nd.txt
を作成します.
$ vagrant ssh $ touch ~/2nd.txt $ exit
この状態ではマシンには1st.txt
と2nd.txt
が存在します.
ここで,1st.txt
が作成された直後の状態に戻してみます.
$ vagrant sandbox rollback $ vagrant ssh
2nd.txt
をつくる前の状態に戻りました.
これで,クリーン状態のマシンを手に入れることができました.
加えて,環境を壊した後でクリーンな状態に戻すこと,ある時点の環境へ戻ることが可能となりました.
気合を入れて構成管理の実験やミドルウェアの検証ができますね.
(Ansible Galaxy)https://galaxy.ansible.com/も始まったことですし,Ansible Playbookを作って公開していきたいものですね.