module Sitefull::Provider::Amazon::Networking

Constants

SUBNET_CIDR_BLOCK
TEMPLATE_TAG
VPC_CIDR_BLOCK

Protected Instance Methods

internet_gateway() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 16
def internet_gateway
  @internet_gateway ||= connection.describe_internet_gateways.internet_gateways.reverse.find { |i| check_internet_gateway(i) } || create_internet_gateway
end
Also aliased as: setup_internet_gateway
route_table() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 21
def route_table
  @route_table ||= connection.describe_route_tables.route_tables.reverse.find { |rt| rt.vpc_id == vpc.vpc_id }
end
security_group() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 25
def security_group
  @security_group ||= connection.describe_security_groups.security_groups.reverse.find { |sg| sg.vpc_id == vpc.vpc_id }
end
setup_internet_gateway()
Alias for: internet_gateway
setup_routing() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 33
def setup_routing
  add_routing unless check_tags(route_table)
end
setup_security_group() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 37
def setup_security_group
  add_security_group_rules unless check_tags(security_group)
end
setup_vpc()
Alias for: vpc
subnet() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 29
def subnet
  @subnet ||= connection.describe_subnets.subnets.reverse.find { |sg| check_tags(sg) } || create_subnet
end
vpc() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 11
def vpc
  @vpc ||= connection.describe_vpcs.vpcs.reverse.find { |v| check_tags(v) } || create_vpc
end
Also aliased as: setup_vpc

Private Instance Methods

add_routing() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 62
def add_routing
  connection.create_route(route_table_id: route_table.route_table_id, destination_cidr_block: '0.0.0.0/0', gateway_id: internet_gateway.internet_gateway_id)
  add_tags(route_table.route_table_id)
end
add_security_group_rules() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 67
def add_security_group_rules
  connection.authorize_security_group_ingress(group_id: security_group.group_id, ip_protocol: 'tcp', from_port: 22, to_port: 22, cidr_ip: '0.0.0.0/0')
  connection.authorize_security_group_ingress(group_id: security_group.group_id, ip_protocol: 'tcp', from_port: 80, to_port: 80, cidr_ip: '0.0.0.0/0')
  connection.authorize_security_group_ingress(group_id: security_group.group_id, ip_protocol: 'tcp', from_port: 443, to_port: 443, cidr_ip: '0.0.0.0/0')
  add_tags(security_group.group_id)
end
add_tags(resource_id) click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 81
def add_tags(resource_id)
  connection.create_tags resources: [resource_id], tags: [{ key: 'Name', value: TEMPLATE_TAG }]
end
check_internet_gateway(internet_gateway) click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 51
def check_internet_gateway(internet_gateway)
  internet_gateway.attachments.map(&:vpc_id).include?(vpc.vpc_id)
end
check_tags(resource) click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 85
def check_tags(resource)
  resource.tags.map(&:value).include?(TEMPLATE_TAG)
end
create_internet_gateway() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 55
def create_internet_gateway
  internet_gateway = connection.create_internet_gateway.internet_gateway
  add_tags(internet_gateway.internet_gateway_id) unless check_tags(internet_gateway)
  connection.attach_internet_gateway(internet_gateway_id: internet_gateway.internet_gateway_id, vpc_id: vpc.vpc_id)
  internet_gateway
end
create_subnet() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 74
def create_subnet
  subnet = connection.create_subnet(vpc_id: vpc.vpc_id, cidr_block: SUBNET_CIDR_BLOCK).subnet
  add_tags(subnet.subnet_id) unless check_tags(subnet)
  connection.modify_subnet_attribute(subnet_id: subnet.subnet_id, map_public_ip_on_launch: { value: true })
  subnet
end
create_vpc() click to toggle source
# File lib/sitefull-cloud/provider/amazon/networking.rb, line 43
def create_vpc
  vpc = connection.create_vpc(cidr_block: VPC_CIDR_BLOCK).vpc
  add_tags(vpc.vpc_id)
  connection.modify_vpc_attribute(vpc_id: vpc.vpc_id, enable_dns_support: { value: true })
  connection.modify_vpc_attribute(vpc_id: vpc.vpc_id, enable_dns_hostnames: { value: true })
  vpc
end