class Terraform::Stack

Wrapper to instantiate a stack from a yaml definition

Attributes

description[R]
module[R]
name[R]
remote[R]
stack_dir[R]
stack_id[R]

Public Class Methods

load(config) click to toggle source
# File lib/terraform_dsl/stack.rb, line 11
def load(config)
  fail MalformedConfig, "Configuration malformed at #{config}" unless config.is_a?(Hash)
  fail MalformedConfig, "A name must be specified for the stack #{config}" unless config.key?('name')
  fail MalformedConfig, 'You must specify a uuid. Get one from rake uuid and add it to the config' unless config.key?('uuid')
  new(config)
end
new(config) click to toggle source
# File lib/terraform_dsl/stack.rb, line 22
def initialize(config)
  @name = config['name']
  @uuid = config['uuid']
  @description = config['description'] || ''
  @variables = config['variables'] || {}
  @remote = config['remote'] || {}
  @stack_id = "terraform_#{@name}_#{@uuid}"
  @module = StackModules.get(config['root'])
  @variables['terraform_stack_id'] = @stack_id
  @stack_dir = File.join(Stacks.dir, @stack_id)
  @module.build(@variables.map { |k, v| [k.to_sym, v] }.to_h)
end

Public Instance Methods

apply() click to toggle source
# File lib/terraform_dsl/stack.rb, line 35
def apply
  Command.new(self, :apply).execute
end
destroy() click to toggle source
# File lib/terraform_dsl/stack.rb, line 39
def destroy
  Command.new(self, :destroy).execute
end
get() click to toggle source
# File lib/terraform_dsl/stack.rb, line 47
def get
  Command.new(self, :get).execute
end
plan() click to toggle source
# File lib/terraform_dsl/stack.rb, line 43
def plan
  Command.new(self, :plan).execute
end
pull() click to toggle source
# File lib/terraform_dsl/stack.rb, line 55
def pull
  Remote.new(self, :pull).execute
end
push() click to toggle source
# File lib/terraform_dsl/stack.rb, line 59
def push
  Remote.new(self, :pull).execute
end
remote_config() click to toggle source
# File lib/terraform_dsl/stack.rb, line 63
def remote_config
  Remote.new(self, :config).execute
end
show() click to toggle source
# File lib/terraform_dsl/stack.rb, line 51
def show
  Command.new(self, :show).execute
end
to_s() click to toggle source
# File lib/terraform_dsl/stack.rb, line 71
    def to_s
      <<-eos
Name: #{@name}
Description: #{@description}
Stack Directory: #{@stack_dir}
      eos
    end
variables() click to toggle source
# File lib/terraform_dsl/stack.rb, line 67
def variables
  @module.variables
end