tonkoo3000’s tweets

IT/WEB関連の技術的な興味などを主に書いていきたいと思います。

Vagrantの自作BOXの書き出し&起動でいつも失敗していた話


[Google Adsense]

いろいろ設定したVagrantBoxを書き出す。

よくある内容ですが、いっつも失敗してて、今回やっと原因つかめた感じなので記事にしてみます。 VagrantVirtualBox などについては以下参照。

y-andoh.hateblo.jp

他にも記事が山ほどあります。Githubとかからテストっぽいモジュールとか取ってくる時に、メインマシン汚したくない場合などに最適です。現在Ver2.0.1でかなり安定して動いてくれています。

nvm、pyenvなど設定して、作業ユーザー作って、Bash Promptに好みの色を付けたりして、AngularとかAWS Cliとか入れて、その他もろもろもろっと・・・・。 ある程度出来上がったものを以下のコマンドでExportします。

vagrant package

package,box がカレントディレクトリに作成されました。

さて、ここからが問題・・・。

とある開発環境ツールでVagrantとの連携がかなり進んでいて、メニューからプロジェクトのRootフォルダに、Vagrant file 置いてメニューなどから操作できるようになっていました。これ使ってみたい・・・。ということで、元のBOXを書き出して使うことにします。

bashalog.c-brains.jp

$ ls ./

README.md karma.conf.js src Vagrantfile node_modules tsconfig.json Vagrantfile.save package-lock.json tslint.json Vagrantfile~ package.json ubuntu-xenial-16.04-cloudimg-console.log e2e protractor.conf.js

無事プロジェクトフォルダのRootに、Vagrantfileが作成されました。 Webstormやばいっす・・・。UI洗練されててとても素敵です。 有償のIDEですが、クライアントにおねだりして購入していただきました。m( )mありがとうございます。

www.jetbrains.com

では、早速、vagrant up うん?

default: Warning: Connection timeout. Retrying...

はい。いつものあれですね。

以前もBOX配布してみたのですが、渡したエンジニアの方から起動できないって言われて断念したことがあります・・・。また、同じことの繰り返し・・・。

そこで、今回は、自分の環境でまた同じOSセッティングを繰り返したくなかったため、いろいろ調べて解決しようとしてみました。

以下、調べた記事を参考に

$ ssh-config

それで、元のBox作った方でも ssh-config したら、なんか中身違うっぽい・・・。 どうも初回起動時に鍵合ってないから勝手に作るねってVagrantさんがおっしゃっているようです。そういう仕様のようです。

Vagrant 1.7 以降では、vagrant up 時に旧来の insecure_key を検知した場合、その仮想マシン用の別の鍵ペアを生成して insecure_key を置き換える。 生成した秘密鍵は .vagrant/machines/default/virtualbox/private_key に置かれ、それ以降そのマシンへのアクセスは新しい鍵が使われるようになり、insecure_key での SSH はできなくなる。

一番わかりやすかった記事。こちらから↑引用させていただきました。ありがとうございます。m( )m qiita.com

もう一回

$ vagrant ssh-config

新しく作ったのだから、当然GuestBOXの側にもそれにあった鍵がセットされてるもんだろ?と思っていたのですが、ふと、別の鍵つくちゃってるんだけど、Boxの方は書き換えられていないため、SSHエラーってことになってるのでは、と推測が働きました。鍵ってたしか400とか600 permissionにしてたから、Vagrantが作成しようとした時に上書きがコケてるのでは?

鍵作り直すって記事もあったのですが、要するに、古いBOXの鍵でつながるんじゃない?とふと思いつきました。

そこで、もとの方の秘密鍵vagrant ssh-config で確認したディレクトリに cp で突っ込んで、vagrant reload.

再び

$ default: Warning: Connection timeout. Retrying...

うーん、起動しない・・・。

一回 vagrant destory してみて、もう一回 vagrant up.... この時に、さっき作成されたものと同じ名前のKeyファイル名で中身を元BOXの鍵に入れ替えてみました。もし、予測どおりならこれでいけるのでは・・・。

==> default: Machine booted and ready!

よっしゃ!

というお話でした。

こちらの記事参考にさせていただきました。m( )m

ja.stackoverflow.com

ついでに見つけたもの。なんか、これが良さげ。今度トライしてみます。 gist.github.com

これって、Vagrant Box 配布する時に注意しとかないと同じことまた起きちゃうなあ・・・。と思った次第です。

晴れて、WebStorm上からVagrant起動成功!!

f:id:tonkoo3000:20180130055802p:plain

いやー、5時間くらい悩んでました・・・。同じ感じのポイントでコケてる方への参考となれば幸いです。 WebStormのUbuntu版使い始めましたが、めっちゃいい感じ。さすが評判高いIDE統合開発環境)だなあと、感心しています。個人ライセンスは年間49ドルとちょっとお高いですが、Cloud9チックにファイル確認できるし、いろいろ準備してくれているので面倒なセッティングいらないっていうのがとても魅力に思えます。Atomで頑張って構成するのもいいんですけどね・・・。どうも、Atomはいろいろplugin入れると動きがもっさりしている感があるので、しばらくはWebStom使い倒していこうかなと思っています。

最後まで読んでいただきまして、ありがとうございました。m( )m