Windows
vagrant
AmazonLinux
ami

Windows10でAmazonマシンイメージ(AMI)のVagrant boxを起動する

はじめに

Windows10でVagrantを使用してAMIの仮想端末を作るのにハマったので共有します。
Windows10と書きましたが、Windows全部だと思います。

環境

  • Windows10
  • Vagrant ver.2.0.0
  • Virtual box ver.5.1.28

コマンド

# vagrant init mvbcoding/awslinux
# vagrant up

実行結果

running `vagrant init`.
PS C:\my_program\vagrant\ami> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'mvbcoding/awslinux' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'mvbcoding/awslinux'
    default: URL: https://vagrantcloud.com/mvbcoding/awslinux
==> default: Adding box 'mvbcoding/awslinux' (v2017.03.0.20170401) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/mvbcoding/boxes/awslinux/versions/2017.03.0.20170401/providers/virtualbox.box
    default: Progress: 100% (Rate: 5530k/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'mvbcoding/awslinux' (v2017.03.0.20170401) for 'virtualbox'!
==> default: Importing base box 'mvbcoding/awslinux'...
Progress: 90%There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["import", "\\\\?\\C:\\Users\\sh-ogawa\\.vagrant.d\\boxes\\mvbcoding-VAGRANTSLASH-awslinux\\2017.03.0.20170401\\virtualbox\\box.ovf", "--vsys", "0", "--vmname", "amzn-ami-hvm-201703020170401-x86_64-gp2-201704051103-guest-72463CQOefdxv_default_1491390639577_72670_1506659512908_35877", "--vsys",
"0", "--unit", "7", "--disk", "C:\\Users\\sh-ogawa\\virtualbox_vm\\amzn-ami-hvm-201703020170401-x86_64-gp2-201704051103-guest-72463CQOefdxv_default_1491390639577_72670_1506659512908_35877\\box-disk001.vmdk"]

Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting \\?\C:\Users\sh-ogawa\.vagrant.d\boxes\mvbcoding-VAGRANTSLASH-awslinux\2017.03.0.20170401\virtualbox\box.ovf...
OK.
0%...
Progress state: VBOX_E_FILE_ERROR
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Could not create the imported medium 'C:\Users\sh-ogawa\virtualbox_vm\amzn-ami-hvm-201703020170401-x86_64-gp2-201704051103-guest-72463CQOefdxv_default_1491390639577_72670_1506659512908_35877\box-disk001.vmdk'.
VBoxManage.exe: error: VMDK: could not create new file 'C:\Users\sh-ogawa\virtualbox_vm\amzn-ami-hvm-201703020170401-x86_64-gp2-201704051103-guest-72463CQOefdxv_default_1491390639577_72670_1506659512908_35877\box-disk001.vmdk' (VERR_ALREADY_EXISTS)
VBoxManage.exe: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component ApplianceWrap, interface IAppliance
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *)" at line 886 of file VBoxManageAppliance.cpp

何かエラーになった。
「VERR_ALREADY_EXISTS」とか言ってるけど、該当のファイルあるんだけど・・・

ログ見てると、フォルダ名がやたら長いことが気になったので、削ってみることに・・・

box.ovfファイルを編集する

以下にあるのでエディタで開いて編集する。

C:\Users\sh-ogawa\.vagrant.d\boxes\mvbcoding-VAGRANTSLASH-awslinux\2017.03.0.20170401\virtualbox
※sh-ogawaはWindowsのログインユーザー

ファイルを開くと

amzn-ami-hvm-

からはじまる長大な記述が3か所あるので削る。
記事中のものだと、

amzn-ami-hvm-201703020170401-x86_64-gp2-201704051103-guest-72463CQOefdxv_default_1491390639577_72670

guestよりも後の文字を全て消せば事足りるはずです。
足らなかったら、もっと削除してしまってOK。

再チャレンジ

# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'mvbcoding/awslinux'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'mvbcoding/awslinux' is up to date...
==> default: Setting the name of the VM: tests_default_1506660373002_76666
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/my_program/vagrant/ami/tests

今度は間違いなく立ち上がった。

終わりに

Vagrant Cloud上で配られているAMIをWindowsで使う場合は、フォルダ名が長すぎるため、
box.ovfファイルをいぢくる必要がある💢

実はネットワーク周りのエラーも出たのですが、既に再現できず。
「RTR3InitEx failed with rc=-1912」というエラーがvirtualboxのログに書かれているので、その場合は
1. Virtual boxをアンインストール
2. Windows再起動
3. コントロール パネル\ネットワークとインターネット\ネットワーク接続で、VirtualBoxnアダプターが削除されていることを確認
4. Virtual boxをインストール
で直りました。

これは恐らく、はじめ意味が判らなくて、とりあえずVagrantとVirtual boxの最新バージョンを入れなおしたので、
おかしくなったのかな~と思っています。