開発環境のvagrantを毎回vagrant upするのが面倒だったのでlaunchctlでOS X起動時にvagrant upしてみました。

今回はNFSで共有フォルダをマウントするVagrantfileの設定を想定しています。NFSの共有フォルダの場合はホストOS側のrootユーザ権限を求められるため、パスワードを入力する必要があります。起動時に自動的にvagrant upするため、このパスワードの入力を自動化するためにexpectを利用します。

スクリプトはこんな感じで

plistはこんな感じで作ります。

デバッグしたいときはStandardOutPathは必須です。あとはlaunchctl load {plist file path}でロードすればOK

expectあれこれ

  • OKパターン

send直後にinteractでユーザの標準入力に戻すのはOK

  • NGパターン

send後に何も記述しないとダメ

send直後にexitもダメ