首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用局部环境变量与Vagrant?

如何使用局部环境变量与Vagrant?
EN

Stack Overflow用户
提问于 2016-02-10 08:55:49
回答 1查看 4.3K关注 0票数 1

我正在传递本地环境变量,如下所示:

代码语言:javascript
复制
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |de|

  de.vm.box = 'ubuntu/trusty64'
  de.vm.hostname = 'virtual_machine'
  de.vm.network 'public_network', bridge:ENV['NETWORK_INTERFACE'], ip:'192.168.2.170'

  de.vm.provider "virtualbox" do |v|
    v.memory = 4096
    v.cpus = 2
  end

  de.vm.synced_folder '.', '/vagrant', disabled:true
  de.vm.synced_folder '../../synced/shared/', '/shared/'
  de.vm.synced_folder '../../synced/devops/', '/devops/'

  install = ENV['DEVOPS_HOME'] + '/vagrant/lib/install'
  de.vm.provision 'shell', path: install + '/basic'
  de.vm.provision 'shell', path: install + '/java8', args: ['automatic']
  de.vm.provision 'shell', path: install + '/aws_cli', args: [ENV['S3_AWS_ACCESS_KEY_ID'],ENV['S3_AWS_SECRET_ACCESS_KEY']]

  setup = ENV['DEVOPS_HOME'] + '/vagrant/lib/setup'
  de.vm.provision 'shell', path: setup + '/hosts'

  sys = ENV['DEVOPS_HOME'] + '/vagrant/lib/system'
  de.vm.provision 'shell', path: sys + '/add_user', args: ['virtual-machine',ENV['VIRTUAL_MACHINE_PASSWORD']]

  steps = ENV['DEVOPS_HOME'] + '/vagrant/server/virtual_machine/steps'
  de.vm.provision 'shell', path: steps + '/install_rserve'

end

显然,为此,我需要在我的~/.profile文件上设置这个变量。但我想知道是否还有其他方法可以做到。在我不需要通过Vagrantfile通知这件事的地方,它看起来不太好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 12:26:15

我设法拥有设置依赖关系的一种方法是使用外部文件(我使用yaml,但是任何文件都会像json那样工作.Vagrantfile是一个红宝石脚本,所以只要你能很容易地用红宝石阅读它,你就没事了。

使用Yaml依赖项的Vagrantfile文件示例

代码语言:javascript
复制
:# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'yaml'
settings = YAML.load_file 'settings/common.yaml'

Vagrant.configure("2") do |config|

  config.vm.box = settings['host_box'] || "pws/centos65"
  config.ssh.username = settings['ssh_user']

  config.vm.define "db" do |db|
    db.vm.hostname = settings['db_hostname']
    db.vm.network "private_network", ip: settings['host_db_address']
  end

...

end

文件settings/common.yaml将被定义为

代码语言:javascript
复制
--- 
host_db_address:  "192.168.90.51" 
host_app_address: "192.168.90.52"

db_hostname:      "local.db"

ssh_user:         "pws"

正如在评论中所说的,我发现使用这种技术的主要优点是当您分发框时。我的团队会克隆项目,必须填充设置(密码依赖等)并准备就绪。

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

https://stackoverflow.com/questions/35310584

复制
相关文章

相似问题

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