Vagrantにフックを追加する
vagrant-notifyのソースを参考にした。
まずはアクションの定義。初期化とcallが必須。 callの最後で受け取ったアプリケーションの処理を継続するためにcallを呼ぶ必要がある。
class SayHelloAction
def initialize(app, env)
@app = app
end
def call(env)
p "helloooo"
@app.call(env)
end
end
次にプラグインの定義。
action_hookに処理を追加する。第2引数は:provisioner_run以外にもいろいろあってタイミングを指定できる。詳しくは以下を参照。
https://www.vagrantup.com/docs/plugins/action-hooks.html
ブロック内では:run_provisionnerアクションの後にSayHelloActionのフックを追加している。
nameが無いと動かないので注意。
class Plugin < Vagrant.plugin('2')
name 'say hello'
action_hook :say_helo, :provisioner_run do |hook|
hook.after :run_provisioner, SayHelloAction
end
end
上記はVagrantfile内に書いても良い。