class Formatron::CloudFormation::Template::VPC::Subnet::NAT

generates CloudFormation Chef Server resources

Constants

ROUTE_PREFIX
ROUTE_TABLE_PREFIX

Public Class Methods

new( nat:, key_pair:, administrator_name:, administrator_password:, availability_zone:, subnet_guid:, hosted_zone_name:, vpc_guid:, vpc_cidr:, kms_key:, private_hosted_zone_id:, public_hosted_zone_id:, bucket:, name:, target: ) click to toggle source

rubocop:disable Metrics/MethodLength rubocop:disable Metrics/ParameterLists

# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 15
def initialize(
  nat:,
  key_pair:,
  administrator_name:,
  administrator_password:,
  availability_zone:,
  subnet_guid:,
  hosted_zone_name:,
  vpc_guid:,
  vpc_cidr:,
  kms_key:,
  private_hosted_zone_id:,
  public_hosted_zone_id:,
  bucket:,
  name:,
  target:
)
  @nat = nat
  guid = @nat.guid
  @vpc_cidr = vpc_cidr
  @vpc_id = "#{VPC::VPC_PREFIX}#{vpc_guid}"
  @instance_id = "#{Instance::INSTANCE_PREFIX}#{guid}"
  @route_table_id = "#{ROUTE_TABLE_PREFIX}#{guid}"
  @route_id = "#{ROUTE_PREFIX}#{guid}"
  _set_os
  _add_setup_script
  _set_source_dest_check
  @instance = Instance.new(
    instance: nat,
    key_pair: key_pair,
    administrator_name: administrator_name,
    administrator_password: administrator_password,
    availability_zone: availability_zone,
    subnet_guid: subnet_guid,
    hosted_zone_name: hosted_zone_name,
    vpc_guid: vpc_guid,
    vpc_cidr: @vpc_cidr,
    kms_key: kms_key,
    private_hosted_zone_id: private_hosted_zone_id,
    public_hosted_zone_id: public_hosted_zone_id,
    bucket: bucket,
    name: name,
    target: target
  )
end

Public Instance Methods

merge(resources:, outputs:) click to toggle source
# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 80
def merge(resources:, outputs:)
  _add_route_table resources
  @instance.merge resources: resources, outputs: outputs
end

Private Instance Methods

_add_route_table(resources) click to toggle source
# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 85
def _add_route_table(resources)
  resources[@route_table_id] = Resources::EC2.route_table(
    vpc: @vpc_id
  )
  resources[@route_id] = Resources::EC2.route(
    route_table: @route_table_id,
    instance: @instance_id
  )
end
_add_setup_script() click to toggle source
# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 69
def _add_setup_script
  @nat.setup do |setup|
    scripts = setup.script
    scripts.unshift Scripts.nat cidr: @vpc_cidr
  end
end
_set_os() click to toggle source

rubocop:enable Metrics/ParameterLists rubocop:enable Metrics/MethodLength

# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 63
def _set_os
  @nat.os(
    'ubuntu'
  )
end
_set_source_dest_check() click to toggle source
# File lib/formatron/cloud_formation/template/vpc/subnet/nat.rb, line 76
def _set_source_dest_check
  @nat.source_dest_check false
end