読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

import { Fun } from 'programming'

Vagrantにsync機能があるって知ってました?(エラーとの戦いもあるよ!)

あったんです。sync機能。

今の会社ではじめて知りました。もうファイル転送ツールを使わなくていい!やったー!

 

どういうこと?

vagrantはあれですね。ローカル仮想環境をつくります。

つまりパソコンの中に、もう1台のパソコンをつくります。

 

外側のパソコンと、内側のパソコンは、まったく別な環境なわけですね。

だから、ファイルのやりとりには、通常の方法が使えません。ファイルをドラッグしてコピーしたり、ターミナルでmvコマンドを打って移動したりできないわけです。(たぶん)

 

そのためドットインストールでは、Cyberduckというファイル転送ツールを利用していました。

dotinstall.com

 

ただ、このファイル転送ツールを使うのすらめんどくさいわけですよね。。(怠慢)

 

sync様

そこでvagrantのsync機能です。

外側のパソコンのある場所と、内側のパソコンのある場所を同期することができます。ワームホールみたいな感じですね。

 

 

設定してみる

さっそく設定してみたいと思います。

 

ディレクトリとファイルはこんな感じ。今は外側のパソコンにいます。

f:id:chuck0523:20151122103331p:plain

 

まずは同期するためのディレクトリを作成します。

f:id:chuck0523:20151122103527p:plain

srcという名前で作成しました。

 

次にvagrantの設定ファイルであるVagrantfileを編集します。

40行目にあるこの項目を書き換えます。

f:id:chuck0523:20151122103716p:plain

 

このように書き換えました。(詳しい解説は参照URLをごらんください)

f:id:chuck0523:20151122103828p:plain

 

自動で同期させるために、以下のコマンドを実行します。

$ vagrant rsync-auto

 

おっ…!

f:id:chuck0523:20151122104900p:plain

いけそう!

 

 

f:id:chuck0523:20151122104930p:plain

普通にエラー出たー!

 

(ここから横道にそれて、エラーとの戦いが始まります。同期についてのみ知りたい方は、「同期確認」までお進みください)

 

原因はこれっぽい???

qiita.com

 

vagrantに入って、リビルドします。

f:id:chuck0523:20151122105154p:plain

普通に[失敗]って出てるけど大丈夫なのかな…w

 

vagrantをexitして、vagrant halt & vagrant up

 

f:id:chuck0523:20151122105439p:plain

\(^o^)/

 

 

VirtualBoxを立ち上げてみます。

f:id:chuck0523:20151122105618p:plain

 

あれ?なんか出てる。

f:id:chuck0523:20151122105603p:plain

新しいバージョン入れろや( ー`дー´) ってことかな?? 

 

 

 

f:id:chuck0523:20151122110051p:plain

入れた。(90MBもあった)

 

ふたたび$ vagrant up

 

f:id:chuck0523:20151122110218p:plain

なんかもっとめんどくさいことに。

 

Vagrant「ちょっと!VirtualBoxが新しすぎ!」

って感じでしょうか。古いバージョンに戻すように言われました。

 

せっかくなので、Vagrantの方を新しくしてみます。

 

qiita.com

 

f:id:chuck0523:20151122110647p:plain

アップしました。バージョン1.7.2から、1.7.4になりました。(そんなに変わってない)

 

もう1度、$ vagrant up

f:id:chuck0523:20151122110811p:plain

おー!きました。(普通のことなのに嬉しい)

 

$ vagrant reload

f:id:chuck0523:20151122111223p:plain

うおおおおおおおおおお!

 

どうやらバージョン関連は関係なかったっぽいです。

 

これかな??

qiita.com

 

ちなみに、エラーログを確認をしたところ、以下のメッセージが。

unable to find the sources of your current Linux kernel.

Linuxカーネルのソースないじゃん。とのこと。

えっ、そんなことあるの?

 

というわけで、恐る恐るカーネルアップデートしました。

$ sudo yum -y update kernel

 

アップデートが終わったら、kernel-develをインストールします。(ここらへんよくわかってない。後で調べる)

$ sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

 

いったん、OSを再起動(exit)して、ふたたび立ち上げます。(vagrant up & vagrant ssh

 

今一度、リビルド!

$ sudo /etc/init.d/vboxadd setup

f:id:chuck0523:20151122115534p:plain

おっ???変化あり。

OpenGLが失敗??これあんまり関係ない気がする…。先に進もう!

 

ホスト側(外側のパソコン)で、vagrantをリロードします。

$ vagrant reload

 

(同期設定の箇所を抜粋)

f:id:chuck0523:20151122115826p:plain

おおおー!エラーなくなった!

 

最後にvagrant自動同期コマンドを打ちます!

$ vagrant rsync 

 

f:id:chuck0523:20151122120152p:plain

おおおお!

ちゃんと、指定したディレクトリをウォッチしてくれてるっぽい!

 

救世主:CentOSへGuest Additionsをインストールしたときのエラー対処方法

 

同期確認

きちんと同期できているかどうか、確認します。

こちらがホスト(外側のパソコン)です。

f:id:chuck0523:20151122120427p:plain

 

こちらがゲスト(内側のパソコン)です。

f:id:chuck0523:20151122120456p:plain

 

設定では、これらのディレクトリが同期しているはず…!

 

ゲスト(外側のパソコン)側で、ファイルを新規作成します。

f:id:chuck0523:20151122120607p:plain

 

ホスト(内側のパソコン)側で確認。

f:id:chuck0523:20151122120704p:plain

!!!!

さっきまで空だったのに、ファイルが出現しました!すごい!

 

 

まとめ

思わぬトラブルが発生してしまいましたが、いい勉強になりました。

そして、vagrantの同期設定、すごい!いままでファイル転送していた自分が恥ずかしいです…///

これからは、バンバン同期を使っていこうと思います。

 

 

参考にした記事

gist.github.com