vagrant up如果您使用Ruby配置器,则在调用时看起来像传递环境变量很简单:
VAR=123 vagrant up
Run Code Online (Sandbox Code Playgroud)
在Vagrantfile中:
ENV['VAR']
Run Code Online (Sandbox Code Playgroud)
如何使用:shell配置程序执行此操作?简单地这样做似乎不起作用:
$VAR
Run Code Online (Sandbox Code Playgroud) 我想一般回答这个问题,但为了说明一下,这是一个用例:
我正在使用Vagrant进行简单的LMAP项目.我使用独立的Puppet进行配置.现在,可能有一些开发人员坐在代理后面,他们需要对VM进行一些额外的配置.我有事情在Puppet方面工作:我可以将代理IP(如果有的话)作为事实传递给Ppetpet中的Vagrantfile木偶,如果它已经设置,Puppet会做出相应的反应.
我唯一的问题是:开发人员如何为他们的开发环境指定/覆盖此设置而无需更改Vagrantfile(在版本控制下并且必须保持dev-environment-neutral)?
如果人们可以覆盖一个名为例如Vagrantfile.local我将排除通过的文件中的一些Vagrant设置,那将是非常棒的.gitignore.
由于Vagrantfile只是Ruby,我尝试了以下内容:
# Also load per-dev custom vagrant config
custom_vagrantfile = 'Vagrantfile.local'
load custom_vagrantfile if File.exist?(custom_vagrantfile)
Run Code Online (Sandbox Code Playgroud)
文件包含基本上是可行的,但它看起来像在包含的文件中,我不再在同一个Vagrant上下文中...
Vagrant::Config.run do |config|
config.vm.provision :puppet do |puppet|
puppet.facter = { "proxy" => "proxy.host:80" }
end
end
Run Code Online (Sandbox Code Playgroud)
...还"重置"我在主要部分制作的所有其他木偶配置值Vagrantfile,这让我觉得我在这里朝着错误的方向前进.我应该注意到我在Ruby的总菜鸟;)
任何人都可以给我一个提示,甚至是一个有效的解决方案,可以在这里完成per-dev定制吗?