class Ecs::Easy::Instance
Constants
- TEMPLATE_BODY
- TEMPLATE_PATH
Attributes
azs[RW]
image_id[RW]
keypair[RW]
security_group[RW]
subnets[RW]
type[RW]
user_data[RW]
vpc[RW]
Public Class Methods
new(**params) { |self| ... }
click to toggle source
# File lib/ecs/easy/instance.rb, line 17 def initialize **params params.each do |k,v| self.send("#{k}=", v) if self.methods.include?(k) end yield( self ) if block_given? end
Public Instance Methods
cfn_parameters( cluster_name, params={} )
click to toggle source
Generate the parameters for cloudformation
# File lib/ecs/easy/instance.rb, line 45 def cfn_parameters( cluster_name, params={} ) base_params = [ { parameter_key: "EcsAmiId", parameter_value: image_id, }, { parameter_key: "EcsInstanceType", parameter_value: type, }, { parameter_key: "KeyName", parameter_value: keypair, }, { parameter_key: "VpcId", parameter_value: vpc, }, { parameter_key: "SubnetIds", parameter_value: subnets, }, { parameter_key: "SecurityGroup", parameter_value: security_group, }, { parameter_key: "EcsCluster", parameter_value: cluster_name, }, ] params.each do |k,v| base_params << ({ "parameter_key" => k, "parameter_value" => v, }) end base_params end
custom_user_data()
click to toggle source
# File lib/ecs/easy/instance.rb, line 24 def custom_user_data default_user_data = [ "#!/bin/bash\n", "echo ECS_CLUSTER=", { "Ref" => "EcsCluster" }, " >> /etc/ecs/ecs.config\n" ] default_user_data.concat(user_data) end
template_body()
click to toggle source
# File lib/ecs/easy/instance.rb, line 36 def template_body return TEMPLATE_BODY if user_data.nil? or user_data.empty? body = JSON.parse( TEMPLATE_BODY ) body["Resources"]["EcsInstanceLc"]["Properties"]["UserData"]["Fn::Base64"]["Fn::Join"][1] = custom_user_data body["Resources"]["EcsInstanceLcWithoutKeyPair"]["Properties"]["UserData"]["Fn::Base64"]["Fn::Join"][1] = custom_user_data return JSON.pretty_generate( body ) end