2013-05-23 9 views
21

क्या कोई मुझे मार्गदर्शन कर सकता है कि मैं अपने VagrantFile में चर शामिल कैसे करूं? मैं एक बाहरी फ़ाइल से Vagrantfile में कॉन्फ़िगर करने की कोशिश कर रहा हूं ताकि मैं सीधे अपने Vagrantfile पर हार्डकोड कॉन्फ़िगरेशन किए बिना कॉन्फ़िगरेशन को अपने सहयोगियों को वितरित कर सकूं।मैं अपने VagrantFile में चर कैसे शामिल करूं?

मैंने सोचा था कि क्योंकि यह रूबी आधारित था मैं एक रूबी फ़ाइल को शामिल बस सकता है, लेकिन मैं एक त्रुटि संदेश मिलता है: unintialized निरंतर MyVars

मेरे VagrantFile

# -*- mode: ruby -*- 
# vi: set ft=ruby : 
require 'vagrant.rb' 
include MyVars 

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

    # Web 
    config.vm.define :joe do |joe| 
    joe.vm.box = "precise64_4.2.12" 
    joe.vm.hostname = WEBVMNAME 
    joe.vm.network :private_network, ip: "192.168.140.141" 

    # Port Forwarding 
    joe.vm.network :forwarded_port, guest: 22, host: 2201 
    joe.vm.network :forwarded_port, guest: 80, host: 8080 

    # Bootstrap Bash Script 
    joe.vm.provision :shell, :path => "bootstrap.sh" 
    end 

end 

सरलीकृत और vagrant.rb शामिल

module MyVars 

    WEBVMNAME = "rex" 

end 

ध्यान दें कि मैं भी रूबी में एक नौसिखिया हूँ तो मैं रूप में अच्छी तरह यकीन नहीं है अगर इसकी सिर्फ वाक्य रचना मैं गलत है?

संपादित करें: अपडेट किया गया कोड मैं

+1

समान: (http://stackoverflow.com/q/13065576/55075) – kenorb

उत्तर

38

मैं https://puphpet.com के दृष्टिकोण का उपयोग, मैं Vagrantfile का एक ही निर्देशिका में एक फ़ाइल config.yaml और ...

मेरी Vagrantfile में बनाने के लिए:

--- 
configs: 
    use: 'home' 
    office: 
     public_ip: '192.168.2.117' 
     <more variables>... 
    home: 
     public_ip: '192.168.1.117' 
     <more variables>... 
+0

यह वास्तव में मेरे लिए मददगार था [Vagrant विन्यास सेटिंग्स स्थानीय स्तर पर (प्रति-देव) ओवरराइड]। अच्छा दृष्टिकोण –

3

उपयोग कर रहा हूँ बदलने का प्रयास करें अपने इस के लिए आवश्यकता होती है:

require './vagrant' 
5

उपयोग require_relative:

require_relative 'vagrant.rb' 
include MyVars 
# ... 
1

मैं एक पुस्तकालय निर्देशिका बनाया:

require './lib/cfpEnvironment.rb' 
include CFPEnvironment 

और फिर मैं क्या गतिशील होने के लिए, बनाया मॉड्यूल में चर को परिभाषित करने की जरूरत है की पटकथा ...

CFPPorts.select{ |key, value| value.numeric? }.each { |key, value| 
    config.vm.network :forwarded_port, guest: value, host: value 
} 

@Matt और @strager के लिए धन्यवाद ऊपर उनके जवाब के लिए किया था!

# encoding: utf-8 
# -*- mode: ruby -*- 
# vi: set ft=ruby : 

require 'yaml' 

current_dir = File.dirname(File.expand_path(__FILE__)) 
configs  = YAML.load_file("#{current_dir}/config.yaml") 
vagrant_config = configs['configs'][configs['configs']['use']] 

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

    config.vm.network 'public_network', ip: vagrant_config['public_ip'] 
    ... 

मेरी config.yaml में:

संबंधित मुद्दे