質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

3235閲覧

vagrant ssh後の挙動が変わった

azuno_mix

総合スコア71

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2016/10/04 15:43

編集2016/10/04 16:14

現在、VagrantでRails開発環境を作っています。
主に下記の通り構築をすすめてきました。

VagrantとVirtualBoxでCentOS-6.7の仮想マシンを作成 - Qiita

そこで、「ゲストOSとホストOSのフォルダを共有する」まで行ったところで、うまく共有ができなかったため、ゲストに接続した上で、

[vagrant@localhost ~]$ sudo yum update kernel -y

としゲストを抜けた上で、ホストからvagrant reloadし、うまく共有が完了したようでした。
しかし、vagrant sshすると

今まで

$ vagrant ssh Last login: Tue Oct 4 14:13:45 2016 from 10.0.2.2 [vagrant@localhost ~]$

といった表示だったものが、

$ vagrant ssh vagrant@127.0.0.1's password: Last login: Tue Oct 4 15:08:16 2016 from 10.0.2.2 -bash-4.1$ ls

というものに変更されてしまいました。
また、それまでセットアップしてきたRubyやRailsもコマンドを叩くと、コマンドがありませんと表示されます。

おそらくカーネルのアップデートが今回の挙動の変化のキッカケだったと思うのですが、前の状態に戻すためにはどういった操作が必要なのでしょうか。
Unix関連の経験が浅く、自分としてはまたVagrantの環境を一から作り直す程度の解決策しか思い浮かばないため質問させていただきました。

よろしくお願いいたします。

追記

mit0223 さん 編集・追記依頼ありがとうございます。

フォルダ共有でvagrant ユーザのホームディレクトリがおかしくなったのではないでしょうか。

仰るとおりでした。共有設定の部分をコメントアウトしてreloadすると、正常に接続することが出来ました。

実はこれまでも似たような現象に悩んでいたこともあったため、大変勉強になりました。
ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mit0223

2016/10/04 15:54

フォルダ共有でvagrant ユーザのホームディレクトリがおかしくなったのではないでしょうか。共有設定を戻して(コメントアウトしてvagrant reload)も同じですか?その場合、ssh でログインした状態で pwd, ls -la, env コマンドの結果を載せてもらえますか。
guest

回答2

0

今回の現象自体には解決済みのようですので、
自分で投稿 -> 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に乗り換えればカーネルのアップグレードは必要なくなりますね。)

投稿2016/10/05 04:04

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azuno_mix

2016/10/11 07:17

大変実践的な知識を教えていただきありがとうございます。 将来的に複数人で開発する見込みもあるので、vagrant upで一発で環境ができあがるように仕上げたいと思います。 フォルダ共有に関してもデフォルトのものしか知りませんでした。 ありがとうございました!
guest

0

自己解決

mit0223 さん の編集・追記依頼により解決いたしました!

フォルダ共有でvagrant ユーザのホームディレクトリがおかしくなったのではないでしょうか。

共有設定の部分をコメントアウトしてreloadすると、正常に接続することが出来ました。
設定がうまくいっていないものを正しいものに変更すると共有も正常に行うことができました。

投稿2016/10/11 07:18

azuno_mix

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問