Hyper-VをVagrantで動かすメモ

Vagrantが1.5からHyper-Vをproviderとして利用できるようになりました。

ちょうどDockerに触ってみたかったり、Hyper-Vのためだけに家のPCをWindows 8.1 Proにアップグレードしたりしていたので、これ幸いと触ってみました。

Vagrantのドキュメントにも簡単に書いてありますが、自分向けの作業ログを残します。

What's todo ?

今回は

  1. Linux 14.04 LTS を使って
  2. Hyper-V向けのBoxを作成し、
  3. vagrantから利用できるようにする

ことを目的とします。

setup

1. Ubuntu ServerのページからUbuntu 14.04 LTS(Trusty)のisoをダウンロードします 2. Hyper-Vで新しい仮想マシンを作成し、ダウンロードしたUbuntu Serverをインストールします。今回は言語を日本語に設定し、インストール時にOpenSSLサーバーを追加しました 3. アップデートをします

$ apt-get update

4. rootを有効化して、パスワードをvagrantに変更

$ sudo passwd root
  vagrant

5. bashの日本語が文字化けしていたので .bashrc を編集して対応

$ vim ~/.bashrc
# 末尾に以下を追加
# case $TERM in
# linux) LANG=C ;;
# *) LANG=ja_JP.UTF-8 ;;
# esac
$ soruce ~/.bashrc

6. sudo をパスワードレスで実行可能に

$ visudo
# Defaults:vagrant !requiretty   # loginするさいにttyを不要にする
# vagrant ALL=(ALL) NOPASSWD:ALL # sudoのパスワード入力を不要にする。末尾に追加すること

7. vagrant用のSSH Keyを設定

$ mkdir .ssh
$ chmod 0700 .ssh & cd .ssh
$ curl -Lo authorized_keys https://raw.github.com/mitchellh/vagrant/master/keys/v$ agrant.pub
$ chmod 0600 authorized_keys

8. SSH接続を高速化

$ sudo vim /etc/ssh/sshd_config
# UseDNS no # 末尾に追加

9. 作成した仮想マシンをExport シャットダウン後にHyper-Vマネージャーから「エクスポート」でエクスポート
10. 仮想マシンのパッケージング

> cd path/to/exported-virtual-machine
> rmdir .\Snapshots /r/s # 作成されたディレクトリに移動して Snapshots ディレクトリを削除
> vim metadata.json
    {
      "name" : "fumitoito/trusty64jp",
      "description" : "This box contains Ubuntu 14.04 LTS 64-bit (Japanese locale)",
      "provider: "hyperv"
    }

tar でパッケージしようとするとなぜか失敗するので 7zip でパッケージした

> ls
trusty64jp.box

11. vagrantに登録してテスト起動

# 管理者権限で実行する必要があります
> vagrant box add fumitoito/trusty64jp .\trusty64jp.box
> vagrant init trusty64jp
> vagrant up --provider hyperv
> vagrant ssh # SSHで接続ができればOK!

少々手番は多いですが、そんなに詰まることなくVagrantHyper-Vにデプロイすることができました。 素敵ですね:)