class Terraspace::App

Attributes

config[R]

Public Class Methods

new() click to toggle source
# File lib/terraspace/app.rb, line 9
def initialize
  @config = defaults
end

Public Instance Methods

configure() { |config| ... } click to toggle source
# File lib/terraspace/app.rb, line 71
def configure
  yield(@config)
end
defaults() click to toggle source
# File lib/terraspace/app.rb, line 13
def defaults
  config = ActiveSupport::OrderedOptions.new
  config.all = ActiveSupport::OrderedOptions.new
  config.all.concurrency = 5
  config.all.exit_on_fail = ActiveSupport::OrderedOptions.new
  config.all.exit_on_fail.down = true
  config.all.exit_on_fail.up = true
  config.all.ignore_stacks = nil
  config.all.include_stacks = nil
  config.allow = ActiveSupport::OrderedOptions.new
  config.allow.envs = nil
  config.allow.regions = nil
  config.auto_create_backend = true
  config.build = ActiveSupport::OrderedOptions.new
  config.build.cache_dir = ":CACHE_ROOT/:REGION/:ENV/:BUILD_DIR"
  config.build.cache_root = nil # defaults to /full/path/to/.terraspace-cache
  config.build.clean_cache = nil # defaults to /full/path/to/.terraspace-cache
  config.build.default_pass_files = ["/files/"]
  config.build.pass_files = []
  config.bundle = ActiveSupport::OrderedOptions.new
  config.bundle.logger = ts_logger
  config.init = ActiveSupport::OrderedOptions.new
  config.init.mode = "auto" # auto, never, always
  config.log = ActiveSupport::OrderedOptions.new
  config.log.root = Terraspace.log_root
  config.logger = ts_logger
  config.logger.formatter = Logger::Formatter.new
  config.logger.level = ENV['TS_LOG_LEVEL'] || :info
  config.layering = ActiveSupport::OrderedOptions.new
  config.layering.names = {}
  config.layering.enable_names = ActiveSupport::OrderedOptions.new
  config.layering.enable_names.expansion = true
  config.summary = ActiveSupport::OrderedOptions.new
  config.summary.prune = false
  config.terraform = ActiveSupport::OrderedOptions.new
  config.terraform.plugin_cache = ActiveSupport::OrderedOptions.new
  config.terraform.plugin_cache.dir = ENV['TF_PLUGIN_CACHE_DIR'] || "#{Terraspace.tmp_root}/plugin_cache"
  config.terraform.plugin_cache.enabled = false
  config.terraform.plugin_cache.purge_on_error = true
  config.test_framework = "rspec"
  config.tfc = ActiveSupport::OrderedOptions.new
  config.tfc.auto_sync = true
  config.tfc.hostname = nil
  config.tfc.vars = ActiveSupport::OrderedOptions.new
  config.tfc.vars.overwrite = true
  config.tfc.vars.overwrite_sensitive = true
  config.tfc.vars.show_message = "create"
  config.tfc.working_dir_prefix = nil
  config.tfc.workspace = ActiveSupport::OrderedOptions.new
  config.tfc.workspace.attrs = ActiveSupport::OrderedOptions.new
  config
end
load_project_config() click to toggle source
# File lib/terraspace/app.rb, line 75
def load_project_config
  evaluate_file("#{Terraspace.root}/config/app.rb")

  # deprecated config/env for config/envs
  path = "#{Terraspace.root}/config/env/#{Terraspace.env}.rb"
  if File.exist?(path)
    # so early on in the boot process that logger.info is unavailable, use ts_logger which is available and same thing.
    ts_logger.info "DEPRECATED: Please rename config/env to config/envs. IE:".color(:yellow)
    ts_logger.info "    mv config/env config/envs"
    evaluate_file(path)
  end

  path = "#{Terraspace.root}/config/envs/#{Terraspace.env}.rb"
  evaluate_file(path)
end
ts_logger() click to toggle source
# File lib/terraspace/app.rb, line 66
def ts_logger
  Logger.new(ENV['TS_LOG_PATH'] || $stderr)
end