LoginSignup
0
1

More than 5 years have passed since last update.

Hyper-V + vagrantで共有ディレクトリのマウントができない場合

Posted at

Hyper-V + vagrant + centos/7 の場合の注意

VirtualBoxだと /vagrantが勝手にできて、読み書きともに出来るけど今回の環境では「もともと Vagrantfileの存在するディレクトリに存在したファイル、ディレクトリ」しか共有されない。ファイルの新規作成もダメ。
なので共有ディレクトリをsmbでマウントするようにした。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.provider "hyperv"
  # enable network 
  config.vm.provision "shell", run: "always", inline: "systemctl restart network.service"
  config.vm.network "private_network", ip: "172.29.202.34"
  config.vm.synced_folder ".", "/vagrant"

  config.vm.synced_folder "./workspace", "/vagrant/workspace", create: true, type: "smb", mount_options: ["vers=3.0"]
  config.vm.provider "hyperv" do |h|
  end

end

smbでのマウントがうまくできない

上の設定でOKかと思ったが、何度やっても以下のようになる。

vagrant up
...
Stderr:

Error:

Stdout:

つまり、何もない。辿れない。
困ったのでデバッグオプション付きで実行してみた(vagrant up --debug)が、smb_prepareが失敗している、程度のことしかわからない。
別のPCで同じVagrantfileを使って vagrant up してみたら上手く行く。ユーザー名とパスワードを入力するのは面倒だが、上手く行く。
何が何だかわからない。

原因

しばらくgoogleでいろいろ探してみたところ、 環境変数 %TMP% %TEMP% の内容がおかしいらしい、とわかった。

システム環境変数で確認すると %TMP% は %USERPROFILE%\AppData\Local\Temp となっていて、%USERPROFILE% は c:\Users\自分のWindowsログイン名 となっている。
つまり user = okadabasso でWindowsにログインしている場合 %TMP% は c:\Users\okadabasso\AppData\Local\Temp になるはずなのだが、どういう訳か c:\Users\okadab~2\AppData\Local\Temp になっていた。

多分、以前空白付きのユーザー名を使っていたのを修正したときにおかしくなったのだと思う。
fsutil 8dot3nameを使って短いファイル名を無効にしてもダメだった。

仕方がないので %TMP%と%TEMP%を無理やり正しい内容にセットしてやるとうまく vagrant upできて、ちゃんと対象のディレクトリが共有出来ていた。

PowerShellの初期化コード

エクスプローラーからPowerShellを開くのが便利なのでPowerShellの場合。

初期化コードのスクリプトファイルを開くのはこう。(ファイルがない場合は別)

[PS]>notepad $profile

内容はこんな感じ

$env:TEMP=$env:USERPROFILE + "\AppData\Local\Temp"
$env:TMP=$env:USERPROFILE + "\AppData\Local\Temp"

で、PowerShellウインドウを開いてから vagrant up すると、対象のディレクトリが共有できる。

その他

この作業で結局二日費やしてしまった。前にvagrantとdockerでいろいろやろうとしてた時も同じような場所ではまっていた。

現段階では Hyper-V + vagrant + Docker for Windows で頑張るより VirutalBox + vagrantで適当なlinuxホストを実行し、その中でdocker使うほうがましなんじゃないか、って気がしている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1