--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:

20
2016

Vagrant上のサービスが共有フォルダのマウント前に起動してこける問題

CATEGORY開発環境
こないだのCentOS7のvagrant環境、自動化しまくってpm2サービス化してvagrant upだけで共有フォルダのアプリまで自動で立ち上がるようにして再起動したらなんかエラーになってたのでその話。

んでいきなり核心に迫るが、エラーの原因は、思いっきりタイトル通りで、アプリのソースを /home/vagrant/sync/ の下に置いてるのに、OS起動時に立ち上がるサービスでそこを参照しようとしたこと。
vagrantの共有フォルダ(virtualbox等)は、OSが立ち上がった後にマウントされるので、普通に読み込めずエラーになる。

で、対策の方だが、いくつか手段を見つけた。
  1. 共有フォルダにアプリを置かない(><
  2. 共有種別をマウントしないrsyncにする
  3. upstartでマウント後にサービスを再起動する
  4. udevでnfsマウント後にサービスを(ry
  5. run: "always"のprovisionでサービスを(ry
1は論外、2は若干面倒、3はCentOS7だとupstartが廃止されてる、4は共有オプションがnfsじゃないと機能しない、ということで最終的に5の手法で解決した。

はい、んで5の手順だが、分かってしまえば非常に簡単。要は Vagrantfile に
config.vm.provision "shell", run: "always" do |s|
s.inline = "sudo systemctl restart pm2"
end
って感じに常に実行されるprovisionを書いて、そこで再起動するというだけ。
(provisionはマウント後に実行される。)
他の手順みたいに追加で何かをインストールする必要もないので、これが一番手っ取り早いと思われる。

provisionは複数作れるので、環境構築用のものが再実行されるようなこともない。
…なのにいろんな手順があるのは、なんか落とし穴があったりするのかな?
でもとりあえずこれで問題なさそうなので使ってみる所存。
スポンサーサイト

Tag: Vagrant

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。