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
从未使用过 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