2013-10-21 71 views
0

我有一個非常簡單的Vagrantfile。基本上,這是用了很多的東西刪除,超級容易直列殼供應者默認文件:Vagrant何時運行配置程序?

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首次,本機被創建,引導和外殼供應方是按預期運行:控制檯上的最後一行顯示爲Hello world!

現在,如果我第二次運行vagrant haltvagrant up,機器啓動,但不運行配置器。至少沒有消息打印出來給終端。

在我看來,這是相對於該條規定,Vagrant documentation

供應方的三種情況運行:vagrant upvagrant reloadvagrant provision

爲什麼腳本不能運行?

回答

2

我不確定這是否發生了變化,但對於shell腳本,您還可以使用run: "always"標誌來確保shell腳本得到執行at all times

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