Help us understand the problem. What is going on with this article?

Vagrantを扱うときにハマりがちポイントをまとめてみた

More than 3 years have passed since last update.

こんにちは。最近はお絵描きに夢中なすろっくさんです。
環境を共有できるVagrantをとても好きです。

一方でVagrantを使ってて結構ハマりポイント多いなあ、と感じたので僕が調べたハマりポイントを書いておきます。
多分大体のVagrantの問題はこれで解決できそうな気がします。

ネットワークが繋がらない

Vagrantは最初にこんなコマンドを打つと思います。

$ vagrant init

このコマンドはVagratfileという設定ファイルを作成するコマンドです。この設定ファイルに書いた通りにVagrantは動作します。
このコマンドはフレームワークやアプリケーションフォルダの中で行います。Railsだと

$ rails new [アプリ名]

とかで作成されたアプリのフォルダのしたですね。そこでvagrant initとか打つんですが、たまにネットワークにどうすりゃええねんみたいなのがあります。

通常ならvagrant sshとかでSSHログインできるんですが、複数のvagrant立ち上げてHTTP通信とかさせるときはIPとか使いたいじゃないですか。もっというとホストマシン側からブラウザで確認したいじゃないですか。

そんなときはVagrantfileのここにこう書きます。

config.vm.network "private_network", ip: "192.168.33.10"

config.vm.networkという設定項目はデフォルトで存在しているので探してみてください。コメントアウトを外して、HTTP通信の時に使いたいIPを設定します。

sshしたい時はアプリのフォルダに入ってvagrant ssh、MySQLやHTTPで確認したいときはこのIPでみたいな使い分けができると思います。

あ、複数たちあげるときは末尾を11,12みたいにVagratfileに記述かえていくといいです。IPかぶったら起動してくれないので。

IPで接続できない

vagrant sshでSSHログインはできてApacheとかnginxとかたてたけどサイトがみれないとかはあるはずです。

そんなときはiptablesとselinuxをオフにしましょう。

# iptables
chkconfig iptables off
/etc/init.d/iptables stop

# selinux
vi /etc/selinux/config
++++
SELINUX=disabled
++++

これで再起動してください。
デフォルトだとこいつらが動いて全部弾いている場合があるので、やっとくといいです。開発のときは邪魔者以外のなんでもありません。

ただし本番でiptablesをオフにするのは絶対やらないでくださいね!適切なファイアーウォール設定をしましょうね!

boxを再利用しようとしたらネットワークエラーがでる

box再利用しようとしてvagrant upしたらこんなエラーがでてIPが降られず、/vagrantがマウントされなかった覚えはありませんか?

The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

ARPCHECK=no /sbin/ifup eth1 2> /dev/null

Stdout from the command:

Device eth1 does not seem to be present, delaying initialization.


Stderr from the command:

HWADDR欄の文字列がコピー元と同じものになっているとこういうエラーがでるようです。

そんなときは以下の手順でファイルを消しましょう。

rm -rf /etc/udev/rules.d/70-persistent-net.rules
rm -rf /etc/udev/rules.d/70-persistent-cd.rules

その後仮想マシンから一旦ログアウトし、以下のコマンドを打ちます。

$ vagrant reload

今度はちゃんとIPとMACアドレスが新規のものになることが確認出来るはずです。

VagrantでLinux系統をvagrant upするとエラーが出続けてログインできなくなる

最新版のvagrantで起こるエラーなんですがLinux系を入れようとした時vagrant upしたらこんな感じになったことありませんか?

default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...

実はこれvagrant側のバグでして、1.8.6以降で解決予定の模様です。

Macだとインストール先は以下になります。

/opt/vagrant/embedded/gems/bin/vagrant/vagrant-1.8.5

plugins/guests/linux/cap/public_key.rbっていうファイルがあるんで、その56行目に以下を追加してください。

chmod 0600 ~/.ssh/authorized_keys

一応1.8.6がリリースされたら直るみたいなので、お悩みの方はぜひ。

まとめ

使ってみて思ったんですが、vagrantを使ってLinuxを扱うときは「vagrantの設定」「Linuxの設定」、今自分が悩んでいることはどちらに起因するものなのか、きちんと押さえてから使うのがいいかなと思います。

個人的にLinuxに明るくない開発者にそういったことを強制するようじゃ、まだ開発ツールの一環としてはちょっとつらいかなあ、オススメできないかなあ、という気もするんですけども。使えれば本当に楽なんですけどね。

「なんかわからないけど繋がらなくなった」という結論を出す前にどうかおためしいただけるとvagrabtの名誉のためによろしくおねがいいたします!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした