首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将环境变量传递给vagrant shell provisioner

将环境变量传递给vagrant shell provisioner
EN

Stack Overflow用户
提问于 2013-10-29 09:26:35
回答 10查看 68.5K关注 0票数 83

如果你使用的是vagrant up配置器,那么在调用Ruby时传递环境变量看起来很简单:

代码语言:javascript
复制
VAR=123 vagrant up

在Vagrantfile中:

代码语言:javascript
复制
ENV['VAR']

如何使用:shell provisioner执行此操作?简单地这么做似乎行不通:

代码语言:javascript
复制
$VAR
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-10-29 09:43:30

这不是很理想,但我现在可以这样做了:

代码语言:javascript
复制
config.vm.provision "shell" do |s|
    s.inline = "VAR1 is $1 and VAR2 is $2"
    s.args   = "#{ENV['VAR1']} #{ENV['VAR2']}"
end
票数 43
EN

Stack Overflow用户

发布于 2014-06-12 04:35:43

我为基于CentOS的配置带来了这个解决方案:将我需要的所有环境变量放在/etc/profile.d/vagrant.sh文件中,然后可以在任何配置脚本中访问它。

简而言之:

代码语言:javascript
复制
  $before_script = <<SCRIPT
  echo # vagrant profile script > /etc/profile.d/vagrant.sh
  echo export ENV_VAR1=foo.com/bar >> /etc/profile.d/vagrant.sh
  echo export ENV_VAR2=bar.com/foo >> /etc/profile.d/vagrant.sh
  chmod +x /etc/profile.d/vagrant.sh
SCRIPT

  $after_script = <<SCRIPT
    rm -rf /etc/profile.d/vagrant.sh
SCRIPT

  config.vm.provision "shell", inline: $before_script
  config.vm.provision "shell", path: "build.sh"
  config.vm.provision "shell", inline: $after_script

https://gist.github.com/bivas/6192d6e422f8ff87c29d上可以找到完整的Vagrantfile

票数 16
EN

Stack Overflow用户

发布于 2015-05-20 21:50:46

您可以在内联脚本中使用#{ENV['VAR']},例如:

代码语言:javascript
复制
config.vm.provision "shell", inline: <<-END
  ...
  # Install my dotfiles are there.  If you're in a hurry you can do
  # SKIP_DOTFILES=1 vagrant up
  if ! [ -d /home/vagrant/dotfiles ] && [ -z '#{ENV['SKIP_DOTFILES']}']; then
    if ! [ -x /usr/bin/git ]; then
      DEBIAN_FRONTEND=noninteractive apt-get install -y git
    fi
    su - vagrant -c 'git clone https://github.com/mgedmin/dotfiles'
    su - vagrant -c 'dotfiles/install.sh'
  fi
  ...
  END

示例取自工作的Vagrantfile。

这有一些缺点:如果$VAR包含单引号,事情就会中断。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19648088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档