【问题标题】:Unexpected error when Vagrant up using yaml fileVagrant up 使用 yaml 文件时出现意外错误
【发布时间】:2016-04-22 14:30:27
【问题描述】:

我正在使用 yaml 试验这个问题

我使用包含配置到我的 Vagrantfile 的 yaml 文件正常工作,经过多次更改(在 Vagrantfile 中添加迭代)vagrant up 意外失败并显示错误

我尝试取回一个“工作正常”的旧提交,即使该代码工作,错误仍然存​​在。

我尝试了很多选项,例如:

  • vagrant up 从头开始​​(删除 .vagrant、box 和 vagrant.d)
  • 卸载并安装 vagrant

我决定删除 yaml 文件及其引用,vagrant up 再次起作用。 终于

由于任何原因,vagrant 显示此错误与 ruby​​ 尝试转换为数组有关。

有什么想法吗?


我的设置

  • mac:OS X Yosemite,版本 10.10.5
  • 流浪者:1.8.1
  • 红宝石:2.0.0p481
  • 码头主机:hashicorp/boot2docker

我的流浪文件

require 'yaml'
config = YAML.load_file('develop.yaml')
Vagrant.configure("2") do |config|
config.vm.define "machine1" do |a|
a.vm.provider "docker" do |d|
  d.image = config["image"]
... more 

我的develop.yaml

---
image: "registry/user/image:xx"
... more

$ vagrant up

Bringing machine 'author' up with 'docker' provider...
==> author: Docker host is required. One will be created if necessary...
author: Vagrant will now create or start a local VM to act as the Docker
author: host. You'll see the output of the `vagrant up` for this VM below.
author:  
dockerhost: Importing base box 'hashicorp/boot2docker'...
dockerhost: Matching MAC address for NAT networking...
dockerhost: Checking if box 'hashicorp/boot2docker' is up to date...
dockerhost: Setting the name of the VM: dockerHost_dockerhost_1461332944380_50015
dockerhost: Clearing any previously set network interfaces...
dockerhost: Preparing network interfaces based on configuration...
dockerhost: Adapter 1: nat
dockerhost: Forwarding ports...
dockerhost: 2375 (guest) => 2375 (host) (adapter 1)
dockerhost: 4502 (guest) => 4502 (host) (adapter 1)
dockerhost: 22 (guest) => 2222 (host) (adapter 1)
dockerhost: Running 'pre-boot' VM customizations...
dockerhost: Booting VM...
dockerhost: Waiting for machine to boot. This may take a few minutes...
dockerhost: SSH address: 127.0.0.1:2222
dockerhost: SSH username: docker
dockerhost: SSH auth method: password
dockerhost: Machine booted and ready!
==> author: Syncing folders to the host VM...
dockerhost: Installing rsync to the VM...
dockerhost: The machine you're rsyncing folders to is configured to use
dockerhost: password-based authentication. Vagrant can't script rsync to automatically
dockerhost: enter this password, so you'll likely be prompted for a password
dockerhost: shortly.
dockerhost: 
dockerhost: If you don't want to have to do this, please enable automatic
dockerhost: key insertion using `config.ssh.insert_key`.
dockerhost: Rsyncing folder: /Users/it/workspace/docker-provisioning/ => /var/lib/docker/docker_1461332968_17083
docker@127.0.0.1's password: 
==> author: Logging in to Docker server...
/opt/vagrant/embedded/gems/gems/vagrant-   1.8.1/plugins/providers/docker/driver.rb:96:in `flatten': can't convert Vagrant::Config::V2::DummyConfig to Array (Vagrant::Config::V2::DummyConfig#to_ary gives  Vagrant::Config::V2::DummyConfig) (TypeError)
from /opt/vagrant/embedded/gems/gems/vagrant- 1.8.1/plugins/providers/docker/driver.rb:96:in `login'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/login.rb:24:in `block in call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/provider.rb:116:in `block (2 levels) in host_vm_lock'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:561:in `lock'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/provider.rb:115:in `block in host_vm_lock'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/provider.rb:114:in `synchronize'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/provider.rb:114:in `host_vm_lock'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/login.rb:21:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/prepare_nfs_settings.rb:15:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:28:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/synced_folders/nfs/action_cleanup.rb:25:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/prepare_nfs_valid_ids.rb:14:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/host_machine_sync_folders.rb:41:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/host_machine_build_dir.rb:19:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/init_state.rb:15:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/message.rb:17:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/destroy_build_image.rb:43:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/handle_box.rb:25:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/plugins/providers/docker/action/host_machine.rb:35:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/handle_box.rb:25:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:224:in `action_raw'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:199:in `block in action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:561:in `lock'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `action'
from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'

【问题讨论】:

    标签: ruby docker vagrant yaml


    【解决方案1】:

    Vagrant.configure("2") 块内,您使用同名的块参数覆盖您的config 变量。因此,在块内部,config 指的是 vagrant 配置对象,而不是解析后的 YAML 哈希。

    如果您使用其他名称引用 YAML 哈希,例如

    yaml_config = YAML.load_file('develop.yaml')
    

    您可以明确地访问各种对象。

    【讨论】:

      【解决方案2】:

      这会解决它,但是:

      require 'yaml'
      
      config = YAML.load_file('develop.yaml')
      Vagrant.configure("2") do |srv|
        srv.vm.define "machine1" do |a|
          a.vm.provider "docker" do |d|
            d.image = config["image"]
          end
        end
      end
      

      你真的应该这样做:

      - name: machine1
        provider: docker
        image: "registry/user/image:xx"
      - name: dbmachine
        provider: docker
        image: "path/to/db/image"
      
      require 'yaml'
      
      nodes = YAML.load_file('machines.yaml')
      machines.each do |machine|
        srv.vm.define machine["name"] do |a|
          a.vm.provider machine["provider"] do |d|
            d.image = machine["image"]
          end
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2016-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        相关资源
        最近更新 更多