Ubuntu 流浪汉术语

Ubuntu 流浪汉术语,ubuntu,vagrant,virtualbox,vagrantfile,Ubuntu,Vagrant,Virtualbox,Vagrantfile,TL;博士有人能帮我理解文件中定义的这些“名称”之间的区别吗 config.vm.define“worker” box.vm.box=“ots-box” box.vm.host\u name=“worker” vb.name=“barhost” 在尝试更改我拥有的vagrant实例的主机名时,我迷失在Vagrantfile语法中。现在我已经成功地更改了主机名,但是其他一些东西(网络)不起作用。我怀疑我已经改变了一些东西,导致vagrant以一种特殊的方式来配置box,这导致了这个问题 Vagr

TL;博士有人能帮我理解文件中定义的这些“名称”之间的区别吗

  • config.vm.define“worker”
  • box.vm.box=“ots-box”
  • box.vm.host\u name=“worker”
  • vb.name=“barhost”

  • 在尝试更改我拥有的vagrant实例的主机名时,我迷失在Vagrantfile语法中。现在我已经成功地更改了主机名,但是其他一些东西(网络)不起作用。我怀疑我已经改变了一些东西,导致vagrant以一种特殊的方式来配置box,这导致了这个问题

    Vagrant.configure("2") do |config|
      config.vm.define "worker".to_sym do |box|
        box.vm.box = "ots-box"
        box.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box"
        box.vm.host_name = "worker"
    end
    
    我想这是无关紧要的,但我正试图用Oracle VirtualBox和vagrant版本1.7.4在Mac El capitan上创建一个ubuntu框


    说: config.vm.box-配置机器将面对的框。此处的值应为已安装盒子的名称或HashiCorp Atlas中盒子的简写名称

    介绍另一个术语vb.name:

    Vagrant.configure('2') do |config|
      config.vm.box = "precise64"
      config.vm.box_url = "http://files.vagrantup.com/precise64.box"
      config.vm.define "foohost" do |foohost|
      end
      config.vm.provider :virtualbox do |vb|
          vb.name = "barhost"
      end
    end
    

    我将试着逐点回答:

    首先使用以下语法

    Vagrant.configure("2") do |config|   
      config.vm.define "worker".to_sym do |box|
        box.vm.box = "ots-box"
        box.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box"
        box.vm.host_name = "worker" 
      end
    
    主要用于运行多个VM()的情况,因此需要为VM定义一个名称,在您的情况下,
    worker
    ,因此在下一个块中,将为
    worker
    VM设置所有参数,并且为了使ruby语法满足需要,您需要定义一个变量名(
    box

    因此,如果您的Vagrant文件中只有一个VM,则不需要此语法,只需

    Vagrant.configure("2") do |config|   
        config.vm.box = "ots-box"
        config.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box"
        config.vm.hostname = "worker" 
      end
    
    其次,
    config/box.vm.box
    指向一个虚拟机,这是一个非常重要的Vagrant概念,因为您要旋转的每个虚拟机都必须根据现有的框创建。你们可以从网上下载这个盒子(流浪者地图册),或者自己制作这个盒子。您可以通过运行
    vagrant box list
    查看机器上安装的可用框。如果vagrant文件中设置的框在available框中不可用,vagrant将尝试下载(因此,如果您指向类似于
    ubuntu/trusty64
    ,即使您没有安装它,vagrant也会从中下载,假设您的提供商可以使用它)

    第三,
    config/box.vm.hostname
    将是您感兴趣的变量(而不是hostname vs host_name)

    config.vm.hostname—计算机应具有的主机名。默认为 无如果为nil,Vagrant将不会管理主机名。如果设置为字符串, 主机名将在启动时设置

    因此,如果在Vagrant文件中设置此变量并启动机器,ubuntu中的
    hostname
    变量将解析为相同的值。例如,从以下文件

    Vagrant.configure(2) do |config|
      ...
      config.vm.box = "ubuntu/trusty64"
      config.vm.hostname = "ubuntu"
      ...
    
    从虚拟机,我得到

    fhenri@machine:~/project/examples/vagrant/ubuntu$ vagrant ssh
    Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-virtual x86_64)
    
     * Documentation:  https://help.ubuntu.com/
    Last login: Tue Jan  5 10:21:54 2016 from 172.16.42.1
    vagrant@ubuntu:~$ hostname
    ubuntu
    

    最后,名称主题,
    config/box.vm.name
    将用于提供程序(在您的例子中是VirtualBox)提供的vm的名称,下面对其进行了很好的解释

    感谢您的精彩写作!最后一个(
    vb.name
    )只是提供者GUI的名称,对吗?在我的例子中,名称显示在Oracle VirtualBox GUI中。是的,您可以设置名称,使其看起来有意义