class YleTf::Action::TerraformInit
Constants
- TF_CMD_ARGS
- TF_CMD_OPTS
Attributes
config[R]
Public Class Methods
new(app)
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 23 def initialize(app) @app = app end
Public Instance Methods
backend()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 72 def backend @backend ||= find_backend end
call(env)
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 27 def call(env) @config = env[:config] Logger.info('Initializing Terraform') Logger.debug("Backend configuration: #{backend}") init_dir if env[:tf_command] == 'init' # Skip initializing Terraform here, as it will be done by the # actuall command later in the middleware stack. @app.call(env) store_terraform_lock else init_terraform store_terraform_lock @app.call(env) end tear_down end
copy_to_module_dir(file)
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 98 def copy_to_module_dir(file) FileUtils.cp(file, config.module_dir.to_s) if File.exist?(file) end
find_backend()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 80 def find_backend backend_type = config.fetch('backend', 'type').downcase backend_proc = Plugin.manager.backends[backend_type] klass = backend_proc.call klass.new(config) end
init_dir()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 49 def init_dir Logger.debug('Configuring the backend') backend.configure Logger.debug('Symlinking errored.tfstate') symlink_to_module_dir('errored.tfstate') end
init_terraform()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 62 def init_terraform Logger.debug('Initializing Terraform') YleTf::System.cmd('terraform', 'init', *tf_init_args, **TF_CMD_OPTS) end
store_terraform_lock()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 67 def store_terraform_lock Logger.debug('Storing .terraform.lock.hcl') copy_to_module_dir('.terraform.lock.hcl') end
symlink_to_module_dir(file)
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 88 def symlink_to_module_dir(file) local_path = Pathname.pwd.join(file) remote_path = config.module_dir.join(file) # Remove the possibly copied old file local_path.unlink if local_path.exist? local_path.make_symlink(remote_path) end
tear_down()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 57 def tear_down Logger.debug('Tearing down backend') backend.tear_down end
tf_init_args()
click to toggle source
# File lib/yle_tf/action/terraform_init.rb, line 76 def tf_init_args TF_CMD_ARGS + Shellwords.split(ENV.fetch('TF_INIT_ARGS', '')) end