在Vagrant中将ENV变量从主机设置为guest虚拟机

时间:2014-03-22 14:38:25

标签: vagrant vagrantfile

有什么方法可以在启动时从主机到客户Vagrant OS设置一些ENV变量?从我的客户操作系统我需要连接到数据库,我想将数据库URL从主机传递给客户以及其他参数。

我尝试使用TEST="foo" vagrant up但是TEST在我的env vars上没有访问过。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你改变“流浪汉”的方式是行不通的。这样做的正确方法是在配置期间。根据您使用的配置程序,有不同的方式。

以下是在配置期间如何在您的访客上回显主机路径环境的示例:

config.vm.provision "shell", inline: "echo " + ENV['PATH']

如您所见,在Vagrantfile中,您可以使用ENV变量来访问主机环境变量。您可以使用它将变量传递给您选择的配置器并根据需要进行处理。

因为我最习惯厨师,所以我会这样做:

  1. 将Vagrantfile所需的所有ENV变量传递给某些厨师属性
  2. 创建一个模板,该模板迭代提供的值并写入导出语句
  3. 使用Chef将此模板放入/etc/profile.d/以适合需要的名称

答案 1 :(得分:0)

@Romeo:请在此处查看我的相关答案: https://stackoverflow.com/a/42250314/6864226

config.vm.provision :shell, path: "scripts/bootstrap.sh", env: {"MYVAR" => ENV['ABC']}

@Sgoettschkes:感谢指针朝着正确的方向