首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Ruby模板Vagrantfile?

如何使用Ruby模板Vagrantfile?
EN

Stack Overflow用户
提问于 2016-03-03 09:09:23
回答 1查看 1.7K关注 0票数 5

我有几个Vagrantfile,每个用于不同的provider,因为Vagrant有一个限制,不允许同时使用相同的Vagrantfile制定两个或多个规定。所以,我分成两个或两个以上的Vagrantfiles,但是我的"body",我的条款脚本对两者都是一样的,唯一改变的就是provider块。

例如:

local_nagios/Vagrantfile

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

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

Vagrant.configure(2) do |nagios|

  nagios.vm.provider :virtualbox do |provider, override|
    override.vm.box = 'ubuntu/trusty64'
    override.vm.hostname = 'nagios.company.com'
    override.vm.synced_folder '.', '/vagrant', disabled:true
    override.vm.network 'public_network', bridge:set['network_interface'], ip:set['dev_nagios_ip']

    provider.memory = 4096
    provider.cpus = 2
  end

  install = set['devops_home'] + '/vagrant/lib/install'
  nagios.vm.provision 'shell', path: install + '/basic'
  nagios.vm.provision 'shell', path: install + '/devops'

  step = set['devops_home'] + '/vagrant/server/nagios/steps'
  nagios.vm.provision 'shell', path: step + '/install', args: [set['nagios_password']]

end

digital_nagios/Vagrantfile

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

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

Vagrant.configure(2) do |nagios|

  nagios.vm.provider :digital_ocean do |provider, override|
    override.vm.box = 'digital_ocean'
    override.vm.hostname = 'nagios.company.com'
    override.vm.synced_folder '.', '/vagrant', disabled:true
    override.ssh.private_key_path = '~/.ssh/id_rsa'

    provider.token = 'my-token'
    provider.image = 'ubuntu-14-04-x64'
    provider.region = 'fra1'
    provider.size = '4gb'
  end

  install = set['devops_home'] + '/vagrant/lib/install'
  nagios.vm.provision 'shell', path: install + '/basic'
  nagios.vm.provision 'shell', path: install + '/devops'

  step = set['devops_home'] + '/vagrant/server/nagios/steps'
  nagios.vm.provision 'shell', path: step + '/install', args: [set['nagios_password']]

end

我想知道是否可以用它来制作一个模板。或者像这样导入我的公共区域:

代码语言:javascript
复制
Vagrant.configure(2) do |nagios|

  nagios.vm.provider :digital_ocean do |provider, override|
    ...
  end

  import '../provision.rb'

end

我不熟悉Ruby,所以任何建议都会非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-03 10:44:05

你可以做这样的事

代码语言:javascript
复制
Vagrant.configure(2) do |nagios|

  nagios.vm.provider :digital_ocean do |provider, override|
    ...
  end

  eval File.read("../Vagrantfile-common")

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

https://stackoverflow.com/questions/35767649

复制
相关文章

相似问题

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