71 lines
2.5 KiB
Ruby
71 lines
2.5 KiB
Ruby
module VagrantPlugins
|
|
module Puppet
|
|
module Config
|
|
class Puppet < Vagrant.plugin("2", :config)
|
|
attr_accessor :manifest_file
|
|
attr_accessor :manifests_path
|
|
attr_accessor :module_path
|
|
attr_accessor :pp_path
|
|
attr_accessor :options
|
|
attr_accessor :facter
|
|
|
|
def manifest_file; @manifest_file || "default.pp"; end
|
|
def manifests_path; @manifests_path || "manifests"; end
|
|
def pp_path; @pp_path || "/tmp/vagrant-puppet"; end
|
|
def options; @options ||= []; end
|
|
def facter; @facter ||= {}; end
|
|
|
|
# Returns the manifests path expanded relative to the root path of the
|
|
# environment.
|
|
def expanded_manifests_path(root_path)
|
|
Pathname.new(manifests_path).expand_path(root_path)
|
|
end
|
|
|
|
# Returns the module paths as an array of paths expanded relative to the
|
|
# root path.
|
|
def expanded_module_paths(root_path)
|
|
return [] if !module_path
|
|
|
|
# Get all the paths and expand them relative to the root path, returning
|
|
# the array of expanded paths
|
|
paths = module_path
|
|
paths = [paths] if !paths.is_a?(Array)
|
|
paths.map do |path|
|
|
Pathname.new(path).expand_path(root_path)
|
|
end
|
|
end
|
|
|
|
def validate(machine)
|
|
errors = []
|
|
|
|
# Calculate the manifests and module paths based on env
|
|
this_expanded_manifests_path = expanded_manifests_path(machine.env.root_path)
|
|
this_expanded_module_paths = expanded_module_paths(machine.env.root_path)
|
|
|
|
# Manifests path/file validation
|
|
if !this_expanded_manifests_path.directory?
|
|
errors << I18n.t("vagrant.provisioners.puppet.manifests_path_missing",
|
|
:path => this_expanded_manifests_path)
|
|
else
|
|
expanded_manifest_file = this_expanded_manifests_path.join(manifest_file)
|
|
if !expanded_manifest_file.file?
|
|
errors << I18n.t("vagrant.provisioners.puppet.manifest_missing",
|
|
:manifest => expanded_manifest_file.to_s)
|
|
end
|
|
end
|
|
|
|
# Module paths validation
|
|
this_expanded_module_paths.each do |path|
|
|
if !path.directory?
|
|
errors << I18n.t("vagrant.provisioners.puppet.module_path_missing",
|
|
:path => path)
|
|
end
|
|
end
|
|
|
|
{ "puppet provisioner" => errors }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|