てくなべ (tekunabe)

ansible / network automation / 学習メモ

Windows 7 と Vagrant 2.0.1 の環境で vagrant up が止まる現象の対処

■ はじめに

Windows 7 で VitualBox 5.1.x と Vagrant 1.9.6 の組み合わせを利用していましたが、 Vagrant 2.0.1 で VirtualBox 5.2 に対応したとのことなので、両方ともアップデートしました。

Vagrant CHANGELOG.md 2.0.1 (November 2, 2017)

providers/virtualbox: Virtualbox 5.2 support [GH-8955]

すると、正常に vagrant up 出来なくなってしまいました。詳細は次の通り。

(結論としては、 PowerShell を 2 から 5.x にアップグレードしたら解消)

■ 遭遇した現象とログ

新規に Vagrantfile を作成して vagrant up を実行したところ、何も出力されれず、進みませんでした。 そこで、デバッグログ出力もつけて vagrant up --debug を実行したとろろ、以下のログの箇所で止まっていました。

  DEBUG push: finalizing
 INFO subprocess: Starting process: ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\/powershell.EXE", "-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "$PSVersionTable.PSVersion.Major"]
 INFO subprocess: Command not in installer, restoring original environment...
DEBUG subprocess: Selecting on IO
DEBUG subprocess: stdout: 2

なお、VirtualBox 5.1.x/Vagrant 1.9.6 に 作成済み( .vagrant フォルダ生成済み)の環境は、VirtualBox 5.2/Vagrant 2.0.1 でも vagrant up できました。 今回の現象は新規の Vagrantfile という条件のようです。

■ 原因

どうも Vagrant 1.9.7 から PowerShell 5.x が必要のようです。 (Windows 7 デフォルトの PowerShell 2ではなく)

github.com

■ 対処

WMF5.1 をインストールして、PowerShell を 5.1 にアップデートします。少し時間がかかります。

WMF 5.1 のインストールと構成 | Microsoft Docs

ダウンロード対象: Win7AndW2K8R2-KB3191566-x64.ZIP

インストール方法は、上記ページに「Windows Server 2008 R2 および Windows 7 で WMF 5.1 をインストールする」に記載されている通り、

ZIP ファイルを展開した後、管理者として PowerShell を開いて

から

Install-Wmf5.1.ps1 スクリプトを実行

します。

インストール後、OS再起動を要求されますので再起動します。

■ 確認

DOSプロンプトで powershell $PSVersionTable を実行して、 PSVersion5.1 から始まっているいることを確認します。

実行例

C:\> powershell $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14409.1012
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1012
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

これで正常に vagrant up できるようになりました。

■ まとめ

調べたり試したりした限り、以下の組み合わせなら大丈夫のようです。

・VirtualBox 5.1.x、Vagrant 1.9.6、PowerShell 2.0 以上
・VirtualBox 5.1.x、Vagrant 1.9.7、PowerShell 5 以上
・VirtualBox 5.2.x、Vagrant 2.0.1 以上、PowerShell 5以上