VMWareからVirtualBox+Vagrantに移行する時の話
普段、VMWareFusionを使って開発してるのですが、 特にVMWareに依存していないので 「Vagrant+VirtualBoxにしてみようかな」と思い立ち、 年末にちょこちょこ作業したのでやったことをメモしておきます。
PackerやVeeweeを使って1からVagrantのBoxを作る方法は ググれば大量に出てきますが、 既存のvmdkから作る方法はあまり情報がなかったです。 なのでそんなに需要はないのかもしれませんね、、、
環境
- OS : Mac OS X 10.9.1
- VirtualBox : 4.3.6
- Vagrant : 1.4.1
- GuestOS : CentOS 6.4
VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads
今回は4.3.6
を選択しました。
vmdkをvdiに変換する
VirtualBoxを入れるとVBoxManageコマンドが使えるようになるので、
以下の感じのコマンドでvmdk
をvdi
に変換します。
VBoxManage clonehd --format VDI XXXX.vmwarevm/仮想ディスク.vmdk output.vdi
※vmdkのパスは各自の環境のパスを設定
※output.vdi
の名前はなんでも良いです
とりあえず起動してみる
- VirtualBoxを起動(GUI)
- 先程作成した
output.vdi
を起動ディスクにして新規作成 - 起動できる事が確認できたら、とりあえずシャットダウン
ネットワーク設定
VirtualBox上のゲストOSの設定
Settings > Network
Adapter1 => NAT
Adapter 1
のAttached to
をNAT
にしておきます。
Terminal等からsshでログインして作業したい場合は、advancedでPortフォワーディングの設定をしておきます。
host:2222 -> guest:22
ゲストOS内の設定
eth0 (NAT)
/etc/sysconfig/network-scripts/ifcfg-eth0
こいつを変更しておきます
DEVICE=eth0 ONBOOT=yes HWADDR=08:00:27:8F:56:EE TYPE=Ethernet BOOTPROTO=dhcp NM_CONTROLLED=yes UUID=6d8d1ced-b056-42cd-b7a3-195eff064f1d
ポイントは
ONBOOT
をyes
HWADDR
(MACアドレス)はVirtualBox上のゲストOSの設定のアダプタの所(Advanced)に表示されている値を指定
networkをrestart
$ sudo service network restart $ ifconfig
でeth0
が上がっている事を確認する
あとはping
等で外部にアクセスできる事を確認しておきます。
(yumでインストールしたりするので)
ローカルにvagrantをインストールする
http://www.vagrantup.com/downloads.html
現時点での最新版1.4.1
を入れる事をおすすめします。
あとは以下の通りにやる
http://futurismo.biz/archives/1678
※元のイメージのサイズが大きいと、boxを作ったり、box addしたり、結構時間がかかります。
上記手順の注意点
Rubyのバージョン
現在最新のchefはRuby1.9系以上じゃないと入らないので、Rubyのバージョンを上げておかないといけないです。 rpmを作るか、自分でビルドしてPATH通すか、rbenvもしくはRVM入れるか、方法はなんでも良いかと思います。
Vagrantfileの編集
名前解決がめっちゃ遅い
http://shibayu36.hatenablog.com/entry/2013/08/12/090545
ということらしいので、以下を入れておきます
Vagrant.configure("2") do |config| config.vm.provider :virtualbox do |vb| ... vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"] end end