class Terraform::StackModule
Attributes
secrets[RW]
Public Class Methods
define(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 16 def define(name, &block) template = self.new(name, &block) StackModules.register(name, template) end
flatten_variable_arrays(variables)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 21 def flatten_variable_arrays(variables) variables.map do |k,v| if v.is_a?(Hash) && v.key?(:default) && v[:default].is_a?(Array) v[:default] = v[:default].join(',') elsif v.is_a?(Array) v = v.join(',') end [k, v] end.to_h end
new(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 36 def initialize(name, &block) @stack_elements = { resource: {}, provider: {}, variable: {}, output: {}, module: {} } @secrets = {} @block = block variable(:terraform_stack_id) {} end
Public Instance Methods
build(**kwargs)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 48 def build(**kwargs) vars = kwargs.map{ |k, v| [k, {default: v}] }.to_h @stack_elements[:variable].merge!(vars) b = @block instance_eval(&b) end
clone()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 43 def clone b = @block StackModule.new(@name, &b) end
elements()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 71 def elements elements = @stack_elements.clone variables = StackModule.flatten_variable_arrays(@stack_elements[:variable]) @stack_elements[:module].each do |mod, data| elements[:module][mod] = StackModule.flatten_variable_arrays(data) end elements[:variable] = variables elements end
generate()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 55 def generate JSON.pretty_generate(elements) end
get(variable)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 67 def get(variable) @stack_elements[:variable].fetch(variable)[:default] end
id()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 81 def id get(:terraform_stack_id) end
outputs()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 63 def outputs @stack_elements[:output] end
variables()
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 59 def variables elements[:variable] end
Private Instance Methods
register_module(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 105 def register_module(name, &block) new_module = Terraform::Module.new(self, name, &block).fields @stack_elements[:module][name.to_sym] = new_module end
Also aliased as: submodule
register_output(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 100 def register_output(name, &block) new_output = Terraform::Output.new(self, &block).fields @stack_elements[:output][name.to_sym] = new_output end
Also aliased as: output
register_provider(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 110 def register_provider(name, &block) provider = Terraform::Provider.new(self, &block) @secrets.merge!(provider.load_secrets(name)) @stack_elements[:provider][name.to_sym] = provider.fields end
Also aliased as: provider
register_resource(resource_type, name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 87 def register_resource(resource_type, name, &block) @stack_elements[:resource] ||= {} @stack_elements[:resource][resource_type.to_sym] ||= {} @stack_elements[:resource][resource_type.to_sym][name.to_sym] = Terraform::Resource.new(self, name, resource_type, &block).fields end
Also aliased as: resource
register_variable(name, &block)
click to toggle source
# File lib/terraform_dsl/stack_module.rb, line 93 def register_variable(name, &block) new_variable = Terraform::Variable.new(self, &block).fields unless @stack_elements[:variable].key?(name.to_sym) @stack_elements[:variable][name.to_sym] = { default: new_variable[:default] || '' } end end
Also aliased as: variable