class Terraform::Module

Public Class Methods

new(parent_module, module_name, &block) click to toggle source
Calls superclass method
# File lib/terraform_dsl/module.rb, line 8
def initialize(parent_module, module_name, &block)
  super(parent_module, &block)

  if @fields[:source].match(/^module_/)
    build_submodule(parent_module, module_name)
  end
end

Private Instance Methods

build_submodule(parent_module, module_name) click to toggle source
# File lib/terraform_dsl/module.rb, line 18
def build_submodule(parent_module, module_name)
  generated = generate_child_module(parent_module)
  module_path = File.join(Stacks.dir, parent_module.id, module_name.to_s)
  FileUtils.mkdir_p(module_path)
  File.open(File.join(module_path, 'stack_module.tf.json'),'w') { |f| f.write(generated) }
  @fields[:source] = File.expand_path(module_path)
end
generate_child_module(parent_module) click to toggle source
# File lib/terraform_dsl/module.rb, line 26
def generate_child_module(parent_module)
  variables = @fields.clone
  variables.delete(:source)
  variables[:terraform_stack_id] = parent_module.id
  child_name = @fields[:source].gsub(/^module_/,'')
  child_module = StackModules.get(child_name)
  child_module.build(variables)
  child_module.generate
end