vagrant
Hyper-V

Hyper-V環境でVagrantを利用する

準備

ホストOS上のディレクトリをゲストOSにマウントするために、SMBを使うことになる。その際に必要となるユーザーIDとパスワードをVagrantfileに記述しないですむようにするため、dotenvプラグインを導入する。

vagrant plugin install dotenv

ユーザーIDとパスワードは、Vagrantfileと同じディレクトリ上の「.env」ファイルに下記形式で記述しておく。

SMB_USER = 'myuserid'
SMB_PASS = 'mypassword'

Vagrantfileの記述

CentOS6系ではインストールされるSMBのバージョンが古く、ホストOS上のディレクトリのマウントがうまくいかないため、CentOSは7系を利用している。

また、vagrant upする際には、ホストOS上で管理者権限で実行する必要がある。管理者権限がない場合、共有領域の作成に失敗し、ディレクトリのマウントがうまくいかない。

# -*- mode: ruby -*-
# -*- coding: utf-8; -*-
# vi: set ft=ruby; :

Dotenv.load

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "webapp"

  # Static IPアドレス指定はHyper-Vで機能しない。
  # config.vm.network :private_network, ip: '192.168.44.11'

  config.vm.synced_folder ".", "/vagrant", type: "smb", smb_username: "#{ENV['SMB_USER']}", smb_password: "#{ENV['SMB_PASS']}", mount_options: ["vers=3.0"]

  config.vm.provider "hyperv" do |vb|
      vb.vmname = "mywebserver"
  end

end