VM上にある開発サーバとかを自動起動したいのでやってみました。
~/Library/LaunchAgentsに好きな名前のplistファイルを作成します(ここではvagrant.startup.plist)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
</dict>
<key>Label</key>
<string>vagrant.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>[Shell script名]</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/vagrant.startup.agent.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/vagrant.startup.agent.stdout</string>
<key>UserName</key>
<string>[ユーザー名]</string>
<key>WorkingDirectory</key>
<string>[Shell scriptを配置したディレクトリ]</string>
</dict>
</plist>
Shell script
cd [VMのディレクトリ] && vagrant up
cd [VMのディレクトリ] && vagrant up
# 必要な数だけ起動
ポイントは
- PATHを明示的に指定
- Shell Scriptを叩いてvagrantのVMを起動
- ユーザーを指定
StandardErrorPathとStandardOutPathはデバック時に役に立ちますがなくても良いです。
Macを再起動すれば自動的にplistが読み込まれますので、VMが起動していればokです。
気になるのは、VM起動したまま再起動すると起動時にVMが中断の状態になってしまうことです。
shutdown時にVMを安全にshutdownさせたいので調べてみると
- osx - Run a script only at shutdown (not log off or restart) on Mac OS X - Stack Overflow
- macosx-script-boot-shutdown/boot-shutdown-script.plist at master · freedev/macosx-script-boot-shutdown
など幾つか情報がでてきますが、今のところうまくいっていません。
とりあえず、中断状態からでも正常に起動してるみたいなのでこれでいいかという感じです。
Show comments