Class: Vagrant::Provisioners::Puppet
- Inherits:
-
Base
- Object
- Base
- Vagrant::Provisioners::Puppet
show all
- Defined in:
- lib/vagrant/provisioners/puppet.rb
Defined Under Namespace
Classes: Config
Instance Attribute Summary
Attributes inherited from Base
#action_env, #config
Instance Method Summary
collapse
Methods inherited from Base
#env, #initialize, register, registered, #vm
Instance Method Details
#manifests_guest_path ⇒ Object
104
105
106
|
# File 'lib/vagrant/provisioners/puppet.rb', line 104
def manifests_guest_path
File.join(config.pp_path, "manifests")
end
|
#prepare ⇒ Object
72
73
74
75
76
|
# File 'lib/vagrant/provisioners/puppet.rb', line 72
def prepare
set_module_paths
share_manifests
share_module_paths
end
|
#provision! ⇒ Object
78
79
80
81
|
# File 'lib/vagrant/provisioners/puppet.rb', line 78
def provision!
verify_binary("puppet")
run_puppet_client
end
|
#run_puppet_client ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/vagrant/provisioners/puppet.rb', line 114
def run_puppet_client
options = [config.options].flatten
options << "--modulepath '#{@module_paths.values.join(':')}'" if !@module_paths.empty?
options << config.computed_manifest_file
options = options.join(" ")
commands = ["cd #{manifests_guest_path}",
"puppet #{options}"]
env.ui.info I18n.t("vagrant.provisioners.puppet.running_puppet", :manifest => config.computed_manifest_file)
vm.ssh.execute do |ssh|
ssh.sudo! commands do |ch, type, data|
if type == :exit_status
ssh.check_exit_status(data, commands)
else
env.ui.info(data)
end
end
end
end
|
#set_module_paths ⇒ Object
97
98
99
100
101
102
|
# File 'lib/vagrant/provisioners/puppet.rb', line 97
def set_module_paths
@module_paths = {}
config.expanded_module_paths.each_with_index do |path, i|
@module_paths[path] = File.join(config.pp_path, "modules-#{i}")
end
end
|
#share_manifests ⇒ Object
83
84
85
|
# File 'lib/vagrant/provisioners/puppet.rb', line 83
def share_manifests
env.config.vm.share_folder("manifests", manifests_guest_path, config.expanded_manifests_path)
end
|
#share_module_paths ⇒ Object
87
88
89
90
91
92
93
94
95
|
# File 'lib/vagrant/provisioners/puppet.rb', line 87
def share_module_paths
count = 0
@module_paths.each do |from, to|
env.config.vm.share_folder("v-pp-m#{count}", to, from)
count += 1
end
end
|
#verify_binary(binary) ⇒ Object
108
109
110
111
112
|
# File 'lib/vagrant/provisioners/puppet.rb', line 108
def verify_binary(binary)
vm.ssh.execute do |ssh|
ssh.sudo!("which #{binary}", :error_class => PuppetError, :_key => :puppet_not_detected, :binary => binary)
end
end
|