Hyper-V + Vagrantで使えるLinux OSを調べてみた&試してみた

訳あって、メイン開発環境をWindowsにできるかテスト中なのですが、Windows上のローカルサーバーをHyper-V + Vagrantにする場合に、設定できるLinux OSを調べてみました。

探し方

公式サイトのbox検索で探すことができます。

Discover Vagrant Boxes

hypervで絞り込みをすると対応しているboxを探すことができます。

Vagrantで作成する仮想マシンをHyper-Vで起動させる方法

providerオプションを入れるだけです。

vagrant up --provider hyperv

これで、Hyper-Vを使って仮想マシンが立ち上がります。

使えるLinux OS

Ubuntu

デスクトップ版もあるので、結構人気のUbuntu。chef公式が更新しているbento系が用意されています。

  • bento/ubuntu-18.04
  • bento/ubuntu-16.04
  • bento/ubuntu-14.04

CentOS

日本ではUbuntuよりもこちらが定番でしょうか。こちらはCentOS公式とbento系があります。

  • centos/7
  • centos/6
  • bento/centos-7.4
  • bento/centos-7
  • bento/centos-6.9

Lavabit社が管理するRoboxes

Lavabit社が管理するRoboxesというboxもあって、そちらはLinux系のほとんどのディストリビューションに対応しています。ArchとかDebianとかAlpineとか概ねあるようですね。

試しにUbuntuを立ち上げてみた

Hyper-Vの場合は、管理者権限でコンソールを立ち上げないとvagrantができませんでした。

The provider 'hyperv' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

The Hyper-V provider requires that Vagrant be run with
administrative privileges. This is a limitation of Hyper-V itself.
Hyper-V requires administrative privileges for management
commands. Please restart your console with administrative
privileges and try again.

ということで、PowerShellなりコマンドプロンプトなりを管理者権限で立ち上げてvagrant init、vagrant upしてみます。

mkdir Ubuntu
cd Ubuntu
vagrant init bento/ubuntu-18.04
vagrant up --provider hyperv

vagrant up --provider hyperv
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
==> default: Verifying Hyper-V is accessible...
==> default: Box 'bento/ubuntu-18.04' could not be found. Attempting to find and install...
    default: Box Provider: hyperv
    default: Box Version: >= 0
==> default: Loading metadata for box 'bento/ubuntu-18.04'
    default: URL: https://vagrantcloud.com/bento/ubuntu-18.04
==> default: Adding box 'bento/ubuntu-18.04' (v201812.27.0) for provider: hyperv
    default: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-18.04/versions/201812.27.0/providers/hyperv.box
    default: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
    default:
==> default: Successfully added box 'bento/ubuntu-18.04' (v201812.27.0) for 'hyperv'!
==> default: Importing a Hyper-V instance
    default: Creating and registering the VM...
    default: Successfully imported VM
    default: Please choose a switch to attach to your Hyper-V instance.
    default: If none of these are appropriate, please open the Hyper-V manager
    default: to create a new virtual switch.
    default:
    default: 1) CoreOS
    default: 2) Default Switch
    default:
    default: What switch would you like to use? 2
==> default: Starting the machine...
==> default: Waiting for the machine to report its IP address...
    default: Timeout: 120 seconds
    default: IP: 192.168.100.119
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 192.168.100.119:22
    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: Preparing SMB shared folders...
    default: You will be asked for the username and password to use for the SMB
    default: folders shortly. Please use the proper username/password of your
    default: account.
    default:
    default: Username: ubuntu
    default: Password (will be hidden):

Vagrant requires administrator access to create SMB shares and
may request access to complete setup of configured shares.
==> default: Mounting SMB shared folders...
    default: C:/Users//Vagrant/***** => /vagrant
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t cifs -o vers=2.0,credentials=/etc/smb_creds_vgt-40f59735aded5df5cd4498f495b8276d-6ad5fdbcbf2eaa93bd62f92333a2e6e5,uid=1000,gid=1000 //192.168.100.109/vgt-40f59735aded5df5cd4498f495b8276d-6ad5fdbcbf2eaa93bd62f92333a2e6e5 /vagrant

The error output from the last command was:

mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

共有フォルダでエラーが出てますが、起動できました。

正常に起動できたら、

vagrant ssh

で入ることができます。

簡単ですね。


Hyper-V + Vagrantで使えるLinux OSを調べて&使ってみました。

Hyper-VはWindows Pro系でしか使えませんが、MicroSoft公式の仮想環境なので安心して使えるのがメリットです。

調べた限り、dockerと相性のいいcoreosは自力でインストールしないとだめっぽいのが少し残念でした。