Vagrant配置错误 - “必须指定一个框”。

时间:2015-09-07 15:41:46

标签: vagrant vagrantfile

盒子工作正常。然后我停了一个(当时唯一一个跑的),现在我不能让他们中的任何一个回来。

正在运行vagrant up [name]会出现以下错误,无论我选择哪一个,或者我是否将其留在vagrant up,以便他们同时出现:

There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* A box must be specified.

运行最新版本的Vagrant(1.7.4)。

这是我的Vagrantfile,包括评论(以防万一):

# Search for boxes here: https://atlas.hashicorp.com/boxes/search
# Refer to commands_vagrant.txt for command reference

Vagrant.configure("2") do |config|

    # Globally defined variables
    config.vm.synced_folder "./", "/var/www/public"

    # CentOS 6.5, Apache 2.2.15, MySQL 5.5.36 (-u root), PHP 5.3.28
    # Note: If PHP session keys don't work, set permissions to 777 (or other more restrictive, but this is guaranteed to work) on /var/lib/php/session
    config.vm.define "php5dot3", primary: true do |php5dot3|
        config.vm.box = "smallhadroncollider/centos-6.5-lamp"
        config.vm.network :forwarded_port, guest: 80, host: 4567
    end

    # Ubuntu 14.04 (SSH pw: vagrant), Apache 2.4.12, MySQL 5.5.43 (-u root -p root), PHP 5.6.10
    config.vm.define "php5dot6" do |php5dot6|
        config.vm.box = "scotch/box"
        config.vm.network :forwarded_port, guest: 80, host: 4568
    end

end

运行vagrant status的结果:

Current machine states:

php5dot3                  poweroff (virtualbox)
php5dot6                  poweroff (virtualbox)

运行vagrant global-status的结果:

id       name     provider   state    directory                           
--------------------------------------------------------------------------
e1f3c85  default  virtualbox poweroff /home/sam/Web                       
c588d51  php5dot6 virtualbox poweroff /home/sam/Web                       
4e71c50  php5dot3 virtualbox poweroff /home/sam/Web    

'default'是我在Vagrantfile中使用的单个框,之后我上周就有了多台机器。 (有关?)

运行vagrant box list的结果:

scotch/box                          (virtualbox, 2.0)
smallhadroncollider/centos-6.5-lamp (virtualbox, 1.0.0)

任何帮助都将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:15)

在您的机器定义中,您需要使用该机器的变量名称,而不是config。试试这个:

在下面的文件中,我已将config.vm更改为php5dot3.vmphp5dot6.vm

Vagrant.configure("2") do |config|

    # Globally defined variables
    config.vm.synced_folder "./", "/var/www/public"

    # CentOS 6.5, Apache 2.2.15, MySQL 5.5.36 (-u root), PHP 5.3.28
    # Note: If PHP session keys don't work, set permissions to 777 (or other more restrictive, but this is guaranteed to work) on /var/lib/php/session
    config.vm.define "php5dot3", primary: true do |php5dot3|
        php5dot3.vm.box = "smallhadroncollider/centos-6.5-lamp"
        php5dot3.vm.network :forwarded_port, guest: 80, host: 4567
    end

    # Ubuntu 14.04 (SSH pw: vagrant), Apache 2.4.12, MySQL 5.5.43 (-u root -p root), PHP 5.6.10
    config.vm.define "php5dot6", autostart:false do |php5dot6|
        php5dot6.vm.box = "scotch/box"
        php5dot6.vm.network :forwarded_port, guest: 80, host: 4568
    end

end

我还在autostart:false框的定义中添加了php5dot6,如果您愿意,可以将其删除。 (这只意味着默认情况下运行vagrant up只会启动主数据。

答案 1 :(得分:0)

如果DigitalOcean出现此错误,则可能需要其插件:

vagrant plugin install vagrant-digitalocean
Installing the 'vagrant-digitalocean' plugin. This can take a few minutes...
Fetching: multipart-post-2.0.0.gem (100%)
Fetching: faraday-0.15.4.gem (100%)
Fetching: vagrant-digitalocean-0.9.3.gem (100%)

答案 2 :(得分:0)

对于现在遇到此问题的人:

在尝试销毁Vagrantfile之前,我已将其删除。您需要从该进程的Vagrantfile所在的正确目录中运行vagrant destroy命令。

运行vagrant ssh-config,然后查看目录列。

如果您像我一样删除了文件,请执行以下操作:

vagrant init

然后

vagrant destroy $id

P.S .:如果在运行这些命令时遇到权限问题,请使用sudo