vagrantを使って、開発環境を用意したかった。
もう、自分の Mac book Air ではあんまりインストールしたくない。
んで、頑張ったんだけど、vagrantの設定だけで、時間が過ぎる過ぎる。
vagrant難しすぎてワロタ(´・ω・)
やりたかったこと
- ホスト側からゲスト側へhttpでアクセス
- ホスト側とゲスト側にnfsで共有ディレクトリを用意(ホスト側のエディタが使いたかったから)
試したこと
Vagrantfileを作成
vagrantをまずはインストールしました。
Download Vagrant - Vagrant
んで、インストールが終わったら、下記作業を勧めます。
流れとして、ディレクトリ作成して、osのイメージをダウンロードして、仮想サーバを用意する。って、ステップかな(よくわかってませんが)
# ディレクトリを作成 $ mkdir -p ~/vagrant/test_server $ cd ~/vagrant/test_server/ # osイメージを取得。今回はCentOS7 $ vagrant box add centos7 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box # initする。 $ vagrant init centos7
initするとVagrantfileが作成されるので、ファイルを編集します。
$ vim Vagrantfile ################# 〜省略〜 config.vm.define :centos7 do |node| node.vm.box = "centos7" config.vm.network :private_network, ip: "192.168.33.10" # ポートフォワーディング config.vm.network "forwarded_port", guest: 80, host: 57080 # 共有ディレクトリ config.vm.synced_folder "/Users/user/image_server/centos_20141208_centos7/share", "/vagrant", :nfs => true end 〜省略〜 #################
「# ポートフォワーディング」の設定はホストからゲストへhttpポートフォーワードするための設定です。この場合ですとホスト:57080 ⇒ ゲスト:80へ繋がるって設定ですね。
「# 共有ディレクトリ」の設定はnfsの設定です。これはやることがいくつかあるので、後述します。
また、Vagrantfileの記述や、読み込みの流れについては、こちらのブログがわかりやすいかも。
Vagrantの重要ファイル「Vagrantfile」の読み込みとその周りの挙動をちょっと細かく追ってみた - 圧倒亭グランパのブログ
nfsの設定
まず、ホスト側で「/etc/exports」ファイルを作成します。
$ sudo touch /etc/exports $ ls /etc/exports /etc/exports
で、nfsdの状況を確認します。起動してなければ起動します。
$ sudo nfsd status nfsd service is enabled nfsd is running (pid 5840, 8 threads) # 上記は"enabled"であれば起動しているとわかります。 # "disable"であれば、下記コマンドを実行ください。 $ sudo nfsd enable
ここまで完了したら、vagrantで作成した仮想イメージを起動しましょう。ちなみに、起動する場所は「Vagrantfile」が存在するカレントディレクトリで実行してください。
$ vagrant up
起動した後、ホスト側の"/etc/exports"に自動に書き込まれていることが確認できます。
$ cat /etc/exports
記述しているだけであれば苦労が見えないなぁ。。。
実は、ここまで記述したことがは何一つ動かなかったorz
これで5時間つぶしたお(´・ω・)
解決につながったこと
vagrantのバージョンを1.7.0(最新版)にしたらできた。ワロタorz
ポートフォワードはなんとかできたが(本当はネットワークでやりたかったんだけど、何故かうまくいかない・・・DHCPが勝手に動くんだよ!!orz
)、nfsdは何度やっても、色々試しても共有されなかった。
もう色々めんどくさくなって、バージョンアップしちゃえっとやっつけにやったらうまくいった。(°Д°;
ちなみに、初回インストールしたバージョンは1.3.5でした。
また、最新版はこちらから
Download Vagrant - Vagrant
解決できなかったこと
ステップを記しましたが、何故か2回目移行の「vagrant up」で、nfsd関係でなにか変なパースエラーが発生します。
$ vagrant up 〜省略〜 /opt/vagrant/embedded/gems/gems/vagrant-1.7.0/plugins/hosts/bsd/cap/nfs.rb:140: warning: character class has '-' without escape: /^# VAGRANT-BEGIN:( 501)? ([\.\/A-Za-z0-9-_]+?)$/
また、エラーがでるとnfsdの設定がうまく動作せず、起動はするけど、共有ディレクトリになったりならなかったりが確認できました。
ので、2回目以降の起動時には下記ステップを追加してください。
$ echo -n "" | sudo tee /etc/exports $ vagrant up
めっちゃ余計なステップ。一度、vagrantで自動で設定された記述を削除しないといけないらしい・・・(´・ω・)ヨクワカラン
これは後日解消したいと思います。