vagrant upしてもなぜかローカルと同期してくれないことがある。
Vagrantfileに共有フォルダの設定は書かれていて、一応ssh接続はできるときの対処法。
共有フォルダのパス長、シンボリックリンクの問題は今回のケースとは別なので扱わない。
発生事例と対応
※OSはCentOS
Vagrantfileには以下のような感じでsynced_folderを設定する記述は一応書いてある。
config.vm.synced_folder "./hoge", "/var/hoge", create: true, mount_options: ['dmode=755','fmode=644']
これでvagrantの起動自体はできても、共有フォルダのマウントに失敗していることがある。
この際、カーネルのバージョン不一致が原因になっているケースが。
下記のような文言がvagrant up時に含まれていれば、その可能性が高い。
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
Virtualbox Guest Additionsインストール時などにバージョンのずれが起きやすい印象。
vagrant sshしてkernel関係のものを調べてみる。
rpm -qa kernel\* | sort
kernel-3.10.0-693.21.1.el7.x86_64
kernel-headers-3.10.0-862.2.3.el7.x86_64
kernel-tools-3.10.0-693.21.1.el7.x86_64
kernel-tools-libs-3.10.0-693.21.1.el7.x86_64
# kernel-headers が kernel のバージョンに対応していない状態。
上記のようにずれが生じていればその部分を修正する
sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers kernel-tools kernel-tools-libs
パッチバージョンまで揃ったか確認する
rpm -qa kernel\* | sort
kernel-3.10.0-693.21.1.el7.x86_64
kernel-3.10.0-862.2.3.el7.x86_64
kernel-devel-3.10.0-862.2.3.el7.x86_64
kernel-headers-3.10.0-862.2.3.el7.x86_64
kernel-tools-3.10.0-862.2.3.el7.x86_64
kernel-tools-libs-3.10.0-862.2.3.el7.x86_64
vagrant reloadで共有できているか確認して、問題なく共有されていればOK。
類似の対応
似たような感じでカーネルのアップデートでも対処できることがある。
ssh後に以下のようにアップデートを行う
sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++
vagrant-vbguestのプラグインをインストールする
vagrant plugin install vagrant-vbguest
この手順でも対応可能。