跳到主要内容

triggers和hook

vagrant-triggers和Vagrant hooks都是用于在Vagrant虚拟机生命周期中执行自定义脚本的插件,但它们之间有以下区别:

  • vagrant-triggers是一个独立的插件,需要先安装才能使用;而Vagrant hooks是Vagrant自带的功能,无需安装插件。

  • vagrant-triggers支持多个触发器和多个脚本,可以根据需要在不同的事件中执行不同的脚本;而Vagrant hooks只支持一个函数,需要在函数内部根据事件类型来执行不同的操作。

您可以使用Vagrant插件vagrant-triggers来在Vagrant命令执行时触发自定义脚本。在该脚本中,您可以使用飞书的API来发送消息。以下是大致步骤:

config.trigger.after [:up] do
system("curl -X POST -H \"Content-Type: application/json\" -d '{\"text\":\"Virtual machine created.\"}' https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx")
end

Vagrant有自己的hooks,它们允许您在Vagrant命令执行的不同阶段运行自定义脚本。您可以使用这些hooks来执行各种操作例如在虚拟机创建完成后安装软件或配置文件,或在虚拟机销毁之前清理资源。

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"

config.vm.provision "shell", inline: <<-SHELL
echo "Hello, world!"
SHELL

config.vm.post_up_message = "Virtual machine created."

config.vm.post_up_hook = Proc.new do |env|
system("curl -X POST -H \"Content-Type: application/json\" -d '{\"text\":\"Virtual machine created.\"}' https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx")
end
end

上述配置定义了一个post_up_hook,它会在虚拟机创建完成后运行。在这种情况下,它会发送一条消息到飞书。您可以根据需要定义其他hooks,例如pre-up、pre-provision、post-provision等。