Vagrant什么时候运营供应商?

时间:2013-10-21 13:44:01

标签: vagrant

我有一个非常简单的Vagrantfile。基本上,它是删除了大量内容的默认文件,也是一个超级简单的内联shell配置程序:

Vagrant.configure("2") do |config|
  config.vm.define "test" do |test|
    test.vm.box = "precise64"
    test.vm.box_url = "http://files.vagrantup.com/precise64.box"

    test.vm.network :forwarded_port, guest: 3000, host: 3000

    test.vm.network :private_network, ip: "192.168.33.100"

    test.vm.provider :virtualbox do |vb|
      vb.customize [ "modifyvm", :id, "--cpus", 2 ]
      vb.customize [ "modifyvm", :id, "--memory", 1024 ]
    end

    test.vm.provision :shell, :inline => "echo \"Hello world!\""
  end
end

当我第一次运行vagrant up时,机器被创建,启动并且shell配置程序按预期运行:控制台上的最后一行显示Hello world!

现在,如果我第二次运行vagrant haltvagrant up,机器会启动,但不会运行配置程序。至少没有消息打印到终端。

在我看来,这与Vagrant documentation相反,后者表示:

  

配置程序分为三种情况:vagrant upvagrant reloadvagrant provision

为什么脚本没有运行?

2 个答案:

答案 0 :(得分:4)

How to run Vagrant provisioning on the first run?回答了我的问题。显然这是Vagrant前段时间的变化......

答案 1 :(得分:3)

我不确定这是否已更改,但是对于shell脚本,您还可以使用run: "always"标志来确保shell脚本被执行at all times

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo hello",
    run: "always"
end