Vagrantfile 和外部配置 - 我做错了什么?

Vagrantfile and external config - what am I doing wrong?

从未使用过 Ruby,但看过几个示例后这似乎很简单 - 不起作用 - 我错过了什么?

vmconfig.yml:

server:   
    hostname: mydomain.com

Vagrantfile:

require 'yaml'
vmconfig = YAML.load_file('vmconfig.yml')

Vagrant.configure(2) do |config|
  config.vm.box = "debian/contrib-jessie64"

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update

    hostname vmconfig["server"]["hostname"]
    config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
end

VM 完成构建时未设置主机名(应设置为什么配置文件)???如果我硬编码它工作正常的值???

最好是使用 vagrant 来定义虚拟机的主机名,如下所示

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
  SHELL

  config.vm.hostname = vmconfig["server"]["hostname"]
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

你可以看到other available settings你可以在你的Vagrantfile

中定义

如果您想 运行 通过 yaml 并从脚本编写,您需要使用 string interpolation

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    hostname #{vmconfig["server"]["hostname"]}
    .... set other things from yaml with #{<variable>} ....
  SHELL