10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/vagrant-terraform/util/terraform_execute.rb', line 10
def terraform_execute(env, command, ignore_error = nil)
env[:machine_tf_dir] = ".vagrant/terraform/#{env[:machine].id}" if env[:machine_tf_dir].nil?
Dir.mkdir(env[:machine_tf_dir]) unless File.exist?(env[:machine_tf_dir])
stdout, stderr, status = Open3.capture3(command, :chdir=>env[:machine_tf_dir])
if !stderr.empty? && env[:machine].provider_config.debug
env[:ui].info("terraform command: #{command}")
env[:ui].info("terraform stdout: #{stdout}")
env[:ui].info("terraform stderr: #{stderr}")
env[:ui].info("terraform status: #{status}")
end
if status != 0 && !(ignore_error && stderr.include?(ignore_error))
raise Errors::TerraformError,
:error_message => "terraform command '#{command}' failed with status: #{status}, stderr: #{stderr}"
end
return stdout
end
|