diff options
author | Christopher Baines <mail@cbaines.net> | 2018-04-05 22:58:56 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2018-04-12 08:30:05 +0100 |
commit | b03a664ec42bd93a7547fb53216ab3ae5d099dcd (patch) | |
tree | f15bbc4e10ab4f6df3e51c194d5aea2f488215bf /lib | |
parent | 4238b1f3bc88ab2a1d97aa3c4967361c853b4880 (diff) | |
download | govuk-mini-environment-admin-b03a664ec42bd93a7547fb53216ab3ae5d099dcd.tar govuk-mini-environment-admin-b03a664ec42bd93a7547fb53216ab3ae5d099dcd.tar.gz |
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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/terraform_working_directory.rb | 67 |
1 files changed, 67 insertions, 0 deletions
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 <mail@cbaines.net> +# +# 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 +# <http://www.gnu.org/licenses/>. + +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 |