プログラマでありたい

おっさんになっても、プログラマでありつづけたい

VagrantのSaharaの実装とAmazon EC2対応


 前回書いた通り、Chef使いがVagrantを使うべき理由はSaharaの存在です。Saharaのsandboxという機能は、サーバの状態をcommit & rollback出来るのです。いわゆるRDBにおけるトランザクション機能です。実はこの実装、VirtualBoxのデフォルトの機能の単なるラッパーです。
 詳しくは、sahara/lib/sahara/session.rb at master · jedi4ever/saharaのsession.rbあたりを見れば良いのですが、VBoxManageのコマンドを送っています。

    def self.on(selection)
      self.initialize

      on_selected_vms(selection) do |boxname|
        if is_snapshot_mode_on?(boxname)
          puts "[#{boxname}] - snapshot mode is already on"
        else
          instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"

          #Creating a snapshot
          puts "[#{boxname}] - Enabling sandbox"

          execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" take \"#{@sandboxname}\" --pause")
        end

      end
    end

VagrantとAmazon EC2



 さてこのVagrantですが、Version1.1からAmazon EC2を始めVirtualBox以外の仮想マシンに対応しています。もしEC2でもSaharaのトランザクション機能があれば、気絶するくらいありがたいです。しかし上記の実装を見る限り、EC2で同様の実装を求めるのは難しそうです。
 そうなると困ったことに、Amazon Linux AMIを使うときにどうしたら良いのかという問題が出ます。今のところ、Amazon Linux AMIが使えるのはAmazon EC2上だけです。となると、ローカルでVagrant使いながらChefのレシピを育てて、EC2上に持っていくということが難しいです。
※ちなみにVagrant 1.1のSaharaは、ryuzeeさんがブランチを作ってくれています。


対応としては、
・Amazon EC2にトランザクション機能がサポートされることを祈る
・VM Export機能の対象にAmazon Linux AMIが含まれるのを祈る
・Amazon Linux AMIではなく、CentOSなど両方ともでサポートされているディストリビューターを使う


 お祈りが多い対応なので、現実的には最後のCentOSなのかと思います。もうちょっと考え中です。


Vagrant入門ガイド

Vagrant入門ガイド

実践 Vagrant

実践 Vagrant