Module: Enscalator::Plugins::NATGateway
- Included in:
- Templates::VPCWithNATGateway
- Defined in:
- lib/enscalator/plugins/nat_gateway.rb
Overview
VPC NAT Gateway plugin
Instance Method Summary collapse
-
#add_route_rule(name, route_table_name, nat_gateway_name, dest_cidr_block, depends_on: []) ⇒ Object
Create new route rule.
-
#allocate_new_eip(name, depends_on: []) ⇒ Hash
Allocate new elastic IP in given VPC template.
-
#nat_gateway_init(name, subnet_name, route_table_name, dest_cidr_block: '0.0.0.0/0', depends_on: []) ⇒ Object
Create new NAT gateway.
Instance Method Details
permalink #add_route_rule(name, route_table_name, nat_gateway_name, dest_cidr_block, depends_on: []) ⇒ Object
Create new route rule
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/enscalator/plugins/nat_gateway.rb', line 31 def add_route_rule(name, route_table_name, nat_gateway_name, dest_cidr_block, depends_on: []) = { Type: 'AWS::EC2::Route' } [:DependsOn] = depends_on unless depends_on.blank? resource name, .merge( Properties: { RouteTableId: ref(route_table_name), NatGatewayId: ref(nat_gateway_name), DestinationCidrBlock: dest_cidr_block }) end |
permalink #allocate_new_eip(name, depends_on: []) ⇒ Hash
Allocate new elastic IP in given VPC template
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/enscalator/plugins/nat_gateway.rb', line 10 def allocate_new_eip(name, depends_on: []) fail('Dependency on the VPC-gateway attachment must be provided') if depends_on.empty? eip_resource_name = name resource eip_resource_name, DependsOn: depends_on, Type: 'AWS::EC2::EIP', Properties: { Domain: 'vpc' } output eip_resource_name, Description: 'Elastic IP address for NAT Gateway', Value: ref(eip_resource_name) get_att(eip_resource_name, 'AllocationId') end |
permalink #nat_gateway_init(name, subnet_name, route_table_name, dest_cidr_block: '0.0.0.0/0', depends_on: []) ⇒ Object
Create new NAT gateway
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/enscalator/plugins/nat_gateway.rb', line 46 def nat_gateway_init(name, subnet_name, route_table_name, dest_cidr_block: '0.0.0.0/0', depends_on: []) nat_gateway_eip_name = "#{name}EIP" nat_gateway_eip = allocate_new_eip(nat_gateway_eip_name, depends_on: depends_on) nat_gateway_name = name = { Type: 'AWS::EC2::NatGateway' } [:DependsOn] = depends_on unless depends_on.blank? resource nat_gateway_name, .merge( Properties: { AllocationId: nat_gateway_eip, SubnetId: ref(subnet_name) }) nat_route_rule_name = "#{name}Route" add_route_rule(nat_route_rule_name, route_table_name, nat_gateway_name, dest_cidr_block, depends_on: depends_on) output nat_gateway_name, Description: 'NAT Gateway', Value: ref(nat_gateway_name) nat_gateway_name end |