良くはまるvagrantのエラー

Vagrantを起動しようとした際に、良くはまるVagrantのエラーを備忘録としてまとめる。

## 公開鍵エラー

`vagrant up`時に下記のエラーが発生した場合、次の二つのことを試みてください。

- VirtualMachinePlatformを無効にする
  - https://zenn.dev/onozaty/articles/vagrant-up-stack-ubuntu20
  - https://kb.seeck.jp/archives/16953
- 公開鍵をセットする
  - https://qiita.com/d2cdot-mmori/items/1c340f175ae510e4456a- 

```
・・・(省略)

default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...

・・・(省略)

default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.
```


## `VERR_VMX_NO_VMX`エラー

`vagrant up`時に、CLIで`VT-x is not available`や`VERR_VMX_NO_VMX`のエラーが生じることがあります。その場合は、PCのブート画面から`VT-x`を有効にしてください。 有効にする方法は、[VT-xの有効可](http://d.hatena.ne.jp/yohei-a/20110124/1295887695)を参考にしてください。


## `VirtualBox Guest Additions`のバージョン相違エラー

`VirtualBox`のホスト側と、`Vagrant`で構築されたゲスト側の`VirtualBox Guest Additions`のバージョンが異なる場合、`vagrant`は起動しません。そのバージョンの相違を修正するvagrantプラグインが`vagrant-vbguest`になります。


その`vagrant-vbguest`を使用して、バージョン相違を修正した際に、下記のエラーが生じることがあります。これは、`vagrant-vbguest`がバージョン相違を修正した際に、VMの再起動が必要になるからです。そのため、`vagran reload`で再起動を行ってください。


```
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000,_netdev vagrant /vagrant

The error output from the command was:

: Invalid argument
```

もし、それでも解消されない場合は、VirtualBoxのソフトを起動し、そこから、起動しているVMを強制停止したのち、`vagran reload`を実行してください。（Windowsの再起動も試してください。）


## ホスト側のIPアドレスの相違エラー

Ubuntuで`VirtualBox`＋`Vagrant`環境を構築すると、`vagrant up`で下記のエラーが生じる場合があります。これは、IPアドレスのレンジが異なるため発生します。その時は、`Vagrantfile`を修正して正しいIPアドレスを付与してください

````
==> default: Clearing any previously set network interfaces...
The IP address configured for the host-only network is not within the
allowed ranges. Please update the address used to be within the allowed
ranges and run the command again.

  Address: 192.168.56.101
  Ranges: 192.168.33.0/21

Valid ranges can be modified in the /etc/vbox/networks.conf file. For
more information including valid format see:

  https://www.virtualbox.org/manual/ch06.html#network_hostonly
````

(Vagrantfile)
````Vagrantfile
#(変更前)
node.vm.network :private_network, ip: '192.168.56.101'

#(変更後)
node.vm.network :private_network, ip: '192.168.33.101'
````

## .netrcの構文ミス

Vagrantではないですが、gitコマンドのIDとPWを省略するために`.netrc`を用いることがあります。

````
# コメント
machine github.com
login xxxxxx
password ghp_xxxxxxxxxxxxxxxxxxx
````

以前は、コメントが利用できていましたが、環境に依存するのか調査していないですが、下記のエラーが生じることがあります。その場合は、コメントを削除してください。

````
default: /home/vagrant/.netrc: line 2: machine: command not found
default: login: Cannot possibly work without effective root
default: /home/vagrant/.netrc: line 4: password: command not found
````

## `VERR_INTNET_FLT_IF_NOT_FOUND`エラー

VirutalBox7.xの環境において`vagrant up`で下記のエラーが発生する場合があります。

````
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "87e1b4f5-9363-4430-9eb9-36c684d306ab", "--type", "headless"]

Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #13' (VERR_INTNET_FLT_IF_NOT_FOUND).
VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
````

ネットワークの設定からVirtualBox Host-Only Networkの「インターネット プロトコルバージョン6(TCP/IPv6)」をチェックを外し、IPv6を無効にする。

参考）
- https://qiita.com/hibohiboo/items/e02e0e02f5365e24ffb0
- https://qiita.com/nakazii-co-jp/items/074c64f5e72f06c94b25

## WindowsアップデートでVagrantが起動しなくなった

Windowsのアップデートで、急にVagrantが起動しなくなることがあります。
`VirtualBox`と`Vagrant`を再インストールすることで解消されることがあります。ただし、最新の`VirtualBox`と`Vagrant`をインストールすると、別のトラブルが生じることがあるので、ご留意ください。また、`Vagrant`を再インストールした場合は、忘れずにVagrantプラグインも再インストールしてください。

※筆者の私が良く使用するvagrantプラグインは、`vagrant-hostmanager`,`vagrant-hosts`,`vagrant-disksize`,`vagrant-vbguest`です。

関連）
- https://qiita.com/nakazii-co-jp/items/b5af00d3dd633484c060
- https://qiita.com/nakazii-co-jp/items/074c64f5e72f06c94b25

## `vagrant-vbguest`エラー (`Vagrant 2.4.3`以降)

古いVagrantのバージョン(`Vagrant 2.4.3`以前)で構築した環境に対して、`Vagrant 2.4.3`にアップグレードして、`vagrant-vbguest`が実行されると下記のエラーが生じます。

```
==> default: Attempting graceful shutdown of VM...
==> default: Destroying VM and associated drives...
/usr/share/vagrant/gems/gems/vagrant-vbguest-0.32.0/lib/vagrant-vbguest/hosts/virtualbox.rb:84:in `block in guess_local_iso': undefined method `exists?' for class File (NoMethodError)

            path && File.exists?(path)
                        ^^^^^^^^
```

原因は、Rubyのバージョンが上がったことで、File.exists?(path)がFile.exist?(path)に変更されました。

`vagrant-vbguest`本家（ https://github.com/dotless-de/vagrant-vbguest ）はメンテナンスされておらず、このバグ修正がされていませんが、Forkされたリポジトリで修正されているため、そのvagrantプラグインを使用するよう変更してください。

詳しくは、[こちら](https://qiita.com/nakazii-co-jp/items/074c64f5e72f06c94b25)をご覧ください。