From b03a664ec42bd93a7547fb53216ab3ae5d099dcd Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Thu, 5 Apr 2018 22:58:56 +0100 Subject: Move the terraform utilities to lib/ Change the module to a class, which is used to represent a terraform working directory. Change the routing for the terraform http backends, to remove any connection with mini environments, and remove this concern from the new TerraformWorkingDirectory class also. --- lib/terraform_working_directory.rb | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/terraform_working_directory.rb (limited to 'lib/terraform_working_directory.rb') diff --git a/lib/terraform_working_directory.rb b/lib/terraform_working_directory.rb new file mode 100644 index 0000000..b561edf --- /dev/null +++ b/lib/terraform_working_directory.rb @@ -0,0 +1,67 @@ +# GOV.UK Mini Environment Admin +# Copyright © 2018 Christopher Baines +# +# This file is part of the GOV.UK Mini Environment Admin. +# +# The GOV.UK Mini Environment Admin is free software: you can +# redistribute it and/or modify it under the terms of the GNU Affero +# General Public License as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later +# version. +# +# The GOV.UK Mini Environment Admin is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with the GOV.UK Mini Environment Admin. If not, see +# . + +require 'fileutils' + +class TerraformWorkingDirectory + def initialize(id, source) + @id = id + @source = source + end + + def working_directory + "tmp/terraform-working-directories/#{@id}" + end + + def within_working_directory + source = File.expand_path(@source) + FileUtils.mkdir_p working_directory + + Dir.chdir(working_directory) do + if Dir.empty?('.') + RubyTerraform.init( + backend: true, + from_module: source, + backend_config: { + address: terraform_backend_address + }, + plugin_dir: terraform_plugin_dir + ) + end + + yield + end + end + + def terraform_backend_address + ( + 'http://localhost:3000' + + Rails + .application + .routes + .url_helpers + .terraform_http_backend_path(@id) + ) + end + + def terraform_plugin_dir + ENV['PATH'].split(':').first + end +end -- cgit v1.2.3