【问题标题】:Vagrant - The following settings shouldn't exist: memory, nameVagrant - 不应存在以下设置:内存、名称
【发布时间】:2017-01-12 04:47:55
【问题描述】:

我已将这个问题从Serverfault 移过来,我认为这更像是一个属于那里的问题:-)

我在 macOS 上有 Vagrant 1.9.1 版,我有 VirtualBox 5.1.12 我正在尝试创建一个多机 Vagrant 文件,但当我想运行它时遇到了麻烦。

我收到消息:

这台机器的配置有错误。请修复 出现以下错误,然后重试:

虚拟机: * 不应存在以下设置:内存、名称

现在在这个阶段我已经注释掉了第二台机器,因为我得到了两次错误 - 所以我只是试图修复第一台。

我在其他线程上看到我应该删除“web”块中的行中的.vm,但如果我这样做了,我会收到这个错误:

这台机器的配置有错误。请修复 出现以下错误,然后重试:

流浪者: * 未知的配置部分 'memory='。
* 未知配置部分 'name='。
* 未知的配置部分“网络”。
*未知的配置部分“供应”。

我在这里有点不知所措,因为我得到的答案在理论上是有道理的,我从 vagrant up docs 开始,但不知何故,我无法让它运行。

我的 vagrant 文件就在这里 - 所以请任何帮助将不胜感激 :-)

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

config.vm.box = "bento/ubuntu-16.04"

config.vm.provider "virtualbox" do |vb|
    vb.gui = false
end

config.vm.define "web" do |web|
    web.vm.name = "16.04-web01"
    web.vm.memory = "512"
    web.vm.network "private_network", ip: "192.168.50.3"
    web.vm.network "forwarded_port", guest: 80, host: 8083
    web.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
    web.vm.provision :shell, path: "bootstrap.sh"    
end

#    config.vm.define :sql01 do |sql|
#     sql.vm.name = "16.04-sqlserver"
#     sql.vm.memory = "4096"
#     sql.vm.network "private_network", ip: "192.168.50.2"
#     sql.vm.network "forwarded_port", guest: 80, host: 8084
#     sql.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
#     sql.vm.provision :shell, path: "bootstrap.sh"    
#   end

#Options for Me specific
config.vm.synced_folder "/Applications/MAMP/htdocs/", "/htdocs_home"

end

【问题讨论】:

    标签: vagrant virtual-machine vagrantfile


    【解决方案1】:

    namememory 是提供商特定的参数,因此需要在此块中移动它们

    Vagrant.configure("2") do |config|
    
        config.vm.box = "geerlingguy/ubuntu1604"
    
        config.vm.define "web" do |web|
            web.vm.network "private_network", ip: "192.168.50.3"
            web.vm.network "forwarded_port", guest: 80, host: 8083
            web.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
            web.vm.provision :shell, path: "bootstrap.sh"    
    
            web.vm.provider "virtualbox" do |vb|
                vb.gui = false
                vb.name = "16.04-web01"
                vb.memory = "512"
            end
        end
    
        config.vm.define :sql01 do |sql|
            sql.vm.network "private_network", ip: "192.168.50.2"
            sql.vm.network "forwarded_port", guest: 80, host: 8084
            sql.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
            sql.vm.provision :shell, path: "bootstrap.sh"    
    
            sql.vm.provider "virtualbox" do |vb|
                vb.gui = false
                vb.name = "16.04-sqlserver"
                vb.memory = "4096"
            end
        end
    
        #Options for Me specific
        config.vm.synced_folder "/Applications/MAMP/htdocs/", "/htdocs_home"
    
    end
    

    【讨论】:

    • 那么我可以为不同的机器设置不同的名称和内存分配吗?
    • 确定 .. 编辑答案以显示示例 ... 然后提供程序块需要位于每个 VM 块内,如果您在外部设置它适用于所有 VM
    • 啊,这很酷,这是有道理的 - 没有考虑将提供者放在定义中:-)
    • 谢谢,对我的脚本帮助很大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2021-02-07
    • 2015-11-25
    相关资源
    最近更新 更多