Class: CloudShaped::TemplateBuilder

Inherits:
Object
  • Object
show all
Includes:
DSL
Defined in:
lib/cloud_shaped/template_builder.rb

Overview

A builder for CloudFormation templates.

Instance Method Summary collapse

Methods included from SnsMethods

#sns_topic

Methods included from CoreMethods

#output, #parameter, #ref, #resource, #tag, #tags

Methods included from FunctionMethods

#fn_base64, #fn_join

Constructor Details

#initialize(settings = {}) ⇒ TemplateBuilder

Returns a new instance of TemplateBuilder.



9
10
11
12
13
# File 'lib/cloud_shaped/template_builder.rb', line 9

def initialize(settings = {})
  @parameters = {}
  @resources = {}
  @outputs = {}
end

Instance Method Details

#def_output(name, value) ⇒ Object

Declares an Output.

Examples:

def_output "loadBalancerName", ref("loadBalancer")

Parameters:

  • name (String)

    the output name

  • value

    the output value (usually a reference to a resource)



66
67
68
# File 'lib/cloud_shaped/template_builder.rb', line 66

def def_output(name, value)
  outputs[name] = output(value)
end

#def_parameter(name, options = {}) ⇒ Object

Declares a Parameter.

Examples:

def_parameter "appName"
def_parameter "minInstances", :type => "Number"

Parameters:

  • name (String)

    the parameter name

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :type (String) — default: "String"

    the parameter type

  • :description (String)

    parameter description

  • :default (String)

    a default value



39
40
41
# File 'lib/cloud_shaped/template_builder.rb', line 39

def def_parameter(name, options = {})
  parameters[name] = parameter(options)
end

#def_resource(name, type, *args, &block) ⇒ Object

Declares a Resource.

Parameters:

  • name (String)

    the resource name

  • type (String, Symbol)

    the resource type

  • args (Hash)

    resource properties



49
50
51
52
53
54
55
56
# File 'lib/cloud_shaped/template_builder.rb', line 49

def def_resource(name, type, *args, &block)
  definition = if type.is_a?(Symbol)
    send(type, *args, &block)
  else
    resource(type, *args, &block)
  end
  resources[name] = definition if definition
end

#templateHash

Returns a CloudFormation template as Ruby data.

Returns:

  • (Hash)

    a CloudFormation template as Ruby data



17
18
19
20
21
22
23
24
# File 'lib/cloud_shaped/template_builder.rb', line 17

def template
  {
    "AWSTemplateFormatVersion" => '2010-09-09',
    "Parameters" => parameters,
    "Resources" => resources,
    "Outputs" => outputs
  }
end