lib/vagrant-boxen/provisioner.rb in vagrant-boxen-0.0.2 vs lib/vagrant-boxen/provisioner.rb in vagrant-boxen-0.0.3
- old
+ new
@@ -1,36 +1,52 @@
module Vagrant
module Boxen
class Provisioner < Vagrant::Provisioners::Base
class Config < Vagrant::Config::Base
- def memcached!
- @memcached = true
+ attr_reader :enabled_modules
+
+ def initialize(*args)
+ super
+ @enabled_modules = []
end
- def memcached?
- @memcached
+ def install(mod)
+ enable_module module_for(mod).new
end
+
+ def enable_module(mod)
+ @enabled_modules << mod
+ end
+
+ protected
+
+ def module_for(mod)
+ Vagrant::Boxen::Modules.const_get classify_string(mod)
+ end
+
+ def classify_string(string)
+ string.to_s.split('_').map do |word|
+ word[0] = word[0].upcase
+ word
+ end.join
+ end
end
def self.config_class
Config
end
def initialize(env, config, provisioner = nil)
super(env, config)
- @logger = Log4r::Logger.new("vagrant::provisioners::boxen")
- @manifests_dir = "/tmp/vagrant-boxen-#{env['vm'].uuid}"
+ @manifests_dir = "/tmp/vagrant-boxen-#{env['vm'].uuid}"
@puppet_provisioner = provisioner ? provisioner : setup_puppet_provisioner
end
def prepare
Dir.mkdir @manifests_dir unless File.directory? @manifests_dir
- if config.memcached?
- File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print "class { 'memcached': }" }
- else
- File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print "" }
- end
+ builder = ManifestBuilder.new(config)
+ File.open("#{@manifests_dir}/site.pp", 'w') { |f| f.print builder.build }
@puppet_provisioner.prepare
end
def provision!
@puppet_provisioner.provision!
@@ -40,14 +56,17 @@
def setup_puppet_provisioner
config = Vagrant::Provisioners::Puppet::Config.new
config.manifests_path = @manifests_dir
config.manifest_file = "site.pp"
- config.module_path = File.join(File.expand_path('../../../', __FILE__), 'puppet/modules')
+ config.module_path = File.join(File.expand_path('../../../', __FILE__), 'puppet-modules')
# The root path to be used on the guest machine, changed to avoid
# collision with the default path for puppet provisioner
config.pp_path = '/tmp/vagrant-boxen-puppet'
- config.options << [ '--verbose', '--debug '] if ENV['DEBUG'] == '1'
+
+ config.options << [ '--verbose ' ] if ENV['VERBOSE'] == '1'
+ config.options << [ '--debug '] if ENV['DEBUG'] == '1'
+
Vagrant::Provisioners::Puppet.new(env, config)
end
end
end
end