我想在运行 vagrant up (或 vagrant provision 等)时在屏幕上显示一些文本 当且仅当 配置完成时。 (对于 vagrant up 它仅在第一次运行,或者如果特别强制使用 --provision 。)

如何才能做到这一点?

最佳答案

添加 shell 配置程序可能是最简单的解决方案,它通过 SSH 在 VM 上执行的成本很小。

另一种选择是使用 vagrant-host-shell 插件:

Vagrant.configure('2') do |config|
  # other config and provisioners
  # [...]

  config.vm.provision :host_shell, inline: 'echo "Provisioned!"'
end

如果你喜欢过度设计,你甚至可以在 Vagrantfile 中制作自己的插件。 ;)

class EchoPlugin < Vagrant.plugin('2')
  class EchoAction
    def initialize(app, env)
      @app = app
    end

    def call(env)
      @app.call(env)
      puts "Provisioned!"
    end
  end

  name 'echo'

  action_hook 'echo' do |hook|
    hook.before Vagrant::Action::Builtin::Provision, EchoAction
  end
end

Vagrant.configure('2') do |config|
  # ...
end

关于vagrant - 仅在配置时在 Vagrantfile 中运行代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21890104/

10-16 16:47