Class: Formatron::CloudFormation::Template::VPC::Subnet::Instance::SecurityGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/formatron/cloud_formation/template/vpc/subnet/instance/security_group.rb

Overview

generates CloudFormation security group resource

Constant Summary collapse

SECURITY_GROUP_PREFIX =
'securityGroup'

Instance Method Summary collapse

Constructor Details

#initialize(security_group:, instance_guid:, vpc_guid:, vpc_cidr:) ⇒ SecurityGroup

rubocop:disable Metrics/MethodLength



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/formatron/cloud_formation/template/vpc/subnet/instance/security_group.rb', line 14

def initialize(
  security_group:,
  instance_guid:,
  vpc_guid:,
  vpc_cidr:
)
  @security_group = security_group
  @vpc_guid = vpc_guid
  @cidr = vpc_cidr
  @guid = instance_guid
  @security_group_id = "#{SECURITY_GROUP_PREFIX}#{@guid}"
  @vpc_id = "#{VPC::VPC_PREFIX}#{@vpc_guid}"
  @open_tcp_ports =
    @security_group.open_tcp_port unless @security_group.nil?
  @open_udp_ports =
    @security_group.open_udp_port unless @security_group.nil?
end

Instance Method Details

#merge(resources:) ⇒ Object

rubocop:disable Metrics/MethodLength



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/formatron/cloud_formation/template/vpc/subnet/instance/security_group.rb', line 34

def merge(resources:)
  ingress_rules = _base_ingress_rules
  ingress_rules.concat(
    @open_tcp_ports.collect do |port|
      {
        cidr: '0.0.0.0/0',
        protocol: 'tcp',
        from_port: port,
        to_port: port
      }
    end
  ) unless @open_tcp_ports.nil?
  ingress_rules.concat(
    @open_udp_ports.collect do |port|
      {
        cidr: '0.0.0.0/0',
        protocol: 'udp',
        from_port: port,
        to_port: port
      }
    end
  ) unless @open_udp_ports.nil?
  resources[@security_group_id] = Resources::EC2.security_group(
    group_description: 'Formatron instance security group',
    vpc: @vpc_id,
    egress: _base_egress_rules,
    ingress: ingress_rules
  )
end