2011-01-11 22:37:09 -08:00

64 lines
1.9 KiB
Ruby

module Vagrant
module Provisioners
# The base class for a "provisioner." A provisioner is responsible for
# provisioning a Vagrant system. This has been abstracted out to provide
# support for multiple solutions such as Chef Solo, Chef Client, and
# Puppet.
class Base
include Vagrant::Util
# The environment which provisioner is running in. This is a
# {Vagrant::Action::Environment}
attr_reader :action_env
# The configuration for this provisioner. This will be an instance of
# the `Config` class which is part of the provisioner.
attr_reader :config
# Registers a provisioner with a given shortcut. This allows that provisioner
# to be referenced with the shortcut.
#
# @param [Symbol] shortcut
def self.register(shortcut)
registered[shortcut] = self
end
# Returns the provisioner associated with the given shortcut.
def self.registered
@@registered ||= {}
end
def initialize(env, config)
@action_env = env
@config = config
end
# Returns the actual {Vagrant::Environment} which this provisioner
# represents.
#
# @return [Vagrant::Environment]
def env
action_env.env
end
# Returns the VM which this provisioner is working on.
#
# @return [Vagrant::VM]
def vm
env.vm
end
# This is the method called to "prepare" the provisioner. This is called
# before any actions are run by the action runner (see {Vagrant::Actions::Runner}).
# This can be used to setup shared folders, forward ports, etc. Whatever is
# necessary on a "meta" level.
def prepare; end
# This is the method called to provision the system. This method
# is expected to do whatever necessary to provision the system (create files,
# SSH, etc.)
def provision!; end
end
end
end