patorashのブログ

方向性はまだない

WindowsのVagrantでフォルダ共有でハマったのでメモ

Windowsで開発環境構築をしようとしていていろいろ模索中。

VagrantUbuntuを入れてフォルダ共有で作業しやすくしようと思って色々試したのだけれど、かなり四苦八苦したのでメモを残す。 なお、VagrantのプロバイダはHyper-Vで入れてる。

NFSでファイル共有できず

よく見かける記事はNFSで共有とあるのだけれど、

Windows users: NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows.

と書いてあるように、使えないらしい。

www.vagrantup.com

が、vagrant-winnfsdプラグインを入れれば使えるらしい。

が!😰結論からいうとHyper-Vを使っているからなのか、使えなかった。詳細は、以下のissueを見るとよい。

github.com

結局、vagrant-winnfsdプラグインは削除した。VitrualBoxを使っている人は問題ないと思います😊

sambaで共有する

先ほどのissueに書いてあるけれど、Hyper-Vでやる場合はsambaがいいらしい。速さも遜色ないよ、と。

ということで、sambaでやることに。smb_usernamesmb_passwordは書いておくとvagrant upの都度聞かれなくて済む。 ただ、ハードコードするのはなんか嫌なので、環境変数とかにしたい(後の課題とする)。

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.provider "hyperv"

  # フォルダ共有設定
  config.vm.synced_folder ".",
    "/vagrant",
    create: true,
    type: "smb",
    mount_options: ["vers=3.0"],
    smb_host: '172.17.112.161', # ipconfigで取得したvEthernet (Default Switch)のIP
    smb_username: '**********' # Windowsのログインユーザー名
    smb_password: '**********', # Windowsのログインパスワード

  config.vm.provider "hyperv" do |hyperv|
    hyperv.cpus = 4
    hyperv.memory = 4096
    hyperv.maxmemory = 1024 * 16
  end
end

ファイアウォールの設定を変更する

設定はこれでOKなのだけれど、まだダメだった…。 原因は、Windowsに入れてるアンチウィルスソフトのファイアウォール機能だった。これに気づけなくて数時間を無駄にした😫

私はアンチウィルスソフトにカスペルスキーを使っているので、その変更方法を書いておく。

f:id:patorash:20190413120548p:plain
設定画面を開く

f:id:patorash:20190413120626p:plain
ファイアウォールの設定画面を開く

f:id:patorash:20190413120755p:plain
パケットルールの設定を開く

f:id:patorash:20190413120943p:plain
Local Servicesの設定を、ブロックから許可に変更する

これでsambaで使用するポートが解放されるため、WindowsVMが通信できるようになった。