with provisioner method change auth ruby deployment vagrant

ruby - provisioner - ¿Cómo incluyo variables en mi VagrantFile?



vagrant user (4)

¿Alguien puede guiarme a cómo incluir variables en mi VagrantFile? Estoy tratando de inyectar configuraciones en el Vagrantfile desde un archivo externo para poder distribuir la configuración a mis colegas sin tener que hacer configuraciones en el código directo directamente en el Vagrantfile.

Pensé que, dado que se basaba en Ruby, solo podía incluir un archivo de Ruby, pero aparece un mensaje de error: constante sin inicializar MyVars

Mi VagrantFile simplificado

# -*- 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

Y vagrant.rb contiene

module MyVars WEBVMNAME = "rex" end

Tenga en cuenta que también soy un novato en Ruby, así que no estoy seguro de si es solo la sintaxis que me equivoqué.

Edición: Código actualizado que estoy usando


Creé un directorio de la biblioteca:

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

Y luego hice el script de lo que necesito para ser dinámico, definiendo las variables en el módulo creado ...

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

Gracias a @Matt y @strager por sus respuestas arriba!


Intenta cambiar tu requerimiento a esto:

require ''./vagrant''


Utilice require_relative :

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


Utilizo el enfoque de https://puphpet.com , creo un archivo config.yaml en el mismo directorio de Vagrantfile y ...

En mi Vagrantfile:

# 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''] ...

En mi config.yaml:

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