class TerraformDevKit::TerraformConfigManager

Public Class Methods

register_extra_vars_proc(p) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 7
def self.register_extra_vars_proc(p)
  @extra_vars_proc = p
end
setup(env, project) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 11
def self.setup(env, project)
  fix_configuration(env)
  create_environment_directory(env)
  copy_files(env)
  TemplateRenderer
    .new(env, project, @extra_vars_proc)
    .render_files
end
update_modules?() click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 20
def self.update_modules?
  var = ENV.fetch('TF_DEVKIT_UPDATE_MODULES', 'false')
  var.strip.casecmp('true').zero?
end

Private Class Methods

copy_files(env) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 46
def self.copy_files(env)
  ExtendedFileUtils.copy(Configuration.get('copy-files'), env.working_dir)
end
create_environment_directory(env) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 41
def self.create_environment_directory(env)
  FileUtils.makedirs(env.working_dir)
end
fix_configuration(env) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 26
def self.fix_configuration(env)
  !Configuration.get('aws').nil? || (raise 'No AWS section in the config file')
  if Environment.running_on_jenkins?
    Configuration.get('aws').delete('profile')
  elsif Configuration.get('aws').key?('profile')
    unless env.local_backend?
      raise "AWS credentials for environment #{env.name} must not be stored!"
    end
  else
    profile = request_profile(env)
    Configuration.get('aws')['profile'] = profile
  end
end
request_profile(env) click to toggle source
# File lib/TerraformDevKit/terraform_config_manager.rb, line 51
def self.request_profile(env)
  puts "Environment #{env.name} requires manual input of AWS credentials"
  print 'Enter the profile to use: '
  profile = $stdin.gets.tr("\r\n", '')
  /^\w+$/ =~ profile || (raise 'Invalid profile name')
  profile
end