としたにあんの左脳

備忘録です.

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ログインします.

$ 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.txt2nd.txtが存在します.

ここで,1st.txtが作成された直後の状態に戻してみます.

$ vagrant sandbox rollback
$ vagrant ssh

2nd.txtをつくる前の状態に戻りました.


これで,クリーン状態のマシンを手に入れることができました.

加えて,環境を壊した後でクリーンな状態に戻すこと,ある時点の環境へ戻ることが可能となりました.

気合を入れて構成管理の実験やミドルウェアの検証ができますね.

(Ansible Galaxy)https://galaxy.ansible.com/も始まったことですし,Ansible Playbookを作って公開していきたいものですね.