今回の現象自体には解決済みのようですので、
自分で投稿 -> BA設定を行っておいてください。
さて、それとは別方面でVagrantのベストプラクティス的なお話をさせてください(長文)
Vagrantのベストプラクティス的な話
Vagrantは1コマンドで開発環境を整える事が目的のツールです。
これの何が良いかと言うと、Vagrantファイルやプロビジョンファイル郡を見せれば新規参入メンバーや未来の自分が理解出来ることです。
また、必要な時に作って、複製して、要らなくなったらすぐ壊せるフットワークの軽さが武器です。
rbenvを導入して、rubyの最新バージョンをインストールして……
これらはプロビジョニングが終わったタイミングで完了している事が望ましいです。
また、冪等性を保つ為に「○○の場合はカーネルをアップグレード」という事は避けるべきでしょう。
やるなら全てのケースに於いて真っ先に実施すべきです。
AnsibleなりChefなり入れて頑張った方が良いと思うのですが、
その第一歩という事でshellを使ったプロビジョニングを紹介します。
Vagrantfileの下部にこのようなコメントアウトされた一体があるかと思います。
この下4行のコメントアウトを削る事で、vagrant up
で仮想環境が作られた直後にapache2のインストールを行い、Webサーバーとして動きますよという内容がサンプルとして紹介されています。
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
今回のQiitaの記事を参考に下記のような感じに修正してみました。
これを参考に自分なりのベストな状態に仕上げてください。
Ruby
1 config.vm.provision "shell", inline: <<-SHELL
2 who
3 echo "----- provision -----"
4 sudo yum update kernel -y
5 sudo yum install -y git gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel sqlite-devel kernel-devel
6 git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
7 echo 'export RBENV_ROOT="/home/vagrant/.rbenv"' >> ~/.bashrc
8 echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> ~/.bashrc
9 echo 'eval "$(rbenv init -)"' >> ~/.bashrc
10 git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
11 source ~/.bashrc
12 rbenv install 2.3.1
13 rbenv rehash
14 rbenv global 2.3.1
15 rbenv rehash
16 SHELL
今回はQiitaの記事で紹介されているコマンドをコピペしただけなので、
真っ先にwhoコマンドを実行してログイン中のユーザーが何者かを調べる事にしました。
もしrootユーザーでログインして実行しているならば以後に続くsudoは全て外し、~/
で始まるディレクトリは全て/home/vagrant/
に置換してください。
またsource ~/.bashrc
に代わり、su vagrant
で動きそうです。
(動くか否かは未確認ですので、暇なときにでも作って壊して確認してみてください)
フォルダ共有に関して
Vagrantの共有フォルダはデフォルト状態では、VirtualBOXの機能を利用する形になっていますが、
開発者として中々致命的なあれこれを抱えています。
- 共有フォルダ内のファイルの更新がとてつもなく遅い
- ゲストでパーミッションの変更ができない
- Apache等のツールがファイルの更新を検知できない
- docker run時、共有フォルダ設定が失敗する
デフォルト以外にもRsync等のファイル共有の仕組みは複数存在します。
これらの問題が表面化してきて困るようなら乗り換えましょう。
vagrant rsync
等で調べてみてください。
(Rsyncに乗り換えればカーネルのアップグレードは必要なくなりますね。)