web-dev-qa-db-ja.com

VagrantConfigエラー-「ボックスを指定する必要があります。」

ボックスは正常に機能していました。次に、1つ(その時点で実行されているのは1つだけ)を停止しましたが、どちらも元に戻すことができません。


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    

「デフォルト」は、先週マルチマシンを動作させる前にVagrantfileにあった単一のボックスでした。 (関連しますか?)


vagrant box listを実行した結果:

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

助けていただければ幸いです、ありがとう。

11
SamHH

マシン定義内では、configの代わりに、そのマシンの変数名を使用する必要があります。これを試してみてください:

以下のファイルで、config.vmphp5dot3.vmまたはphp5dot6.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を実行すると、デフォルトでプライマリのみが開始されることを意味します。

15

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%)
1
FlyingV