class Akashi::Builder
Public Instance Methods
build()
click to toggle source
# File lib/akashi/builder.rb, line 3 def build create_ssl_certificate create_vpc create_internet_gateway create_subnets create_security_groups create_key_pair create_ec2_instances create_subnet_group create_db_instance create_load_balancer end
Private Instance Methods
create_db_instance()
click to toggle source
# File lib/akashi/builder.rb, line 89 def create_db_instance @db_instance = Akashi::Rds::DbInstance.create(security_group: security_group[:rds]) end
create_ec2_instances()
click to toggle source
# File lib/akashi/builder.rb, line 61 def create_ec2_instances Akashi.manifest.role.each do |role_name, role| role.subnets.zip(subnets[role_name]).each do |subnet, _subnet| if !!subnet.instance ami = Akashi::Ec2::Ami.find(subnet.instance.ami_id) (subnet.instance.number_of_instances || 1).times do ec2_instances[role_name] << Akashi::Ec2::Instance.create( ami: ami, instance_class: subnet.instance.instance_class, security_group: security_group[role_name], subnet: _subnet, ) end end end end ec2_instances[:gateway].each do |ec2_instance| eip = Akashi::Vpc::ElasticIp.create eip.associate(instance: ec2_instance) end end
create_internet_gateway()
click to toggle source
# File lib/akashi/builder.rb, line 31 def create_internet_gateway @internet_gateway = Akashi::Vpc::InternetGateway.create @vpc.attach_internet_gateway(@internet_gateway) @route_table.create_route(internet_gateway: @internet_gateway) end
create_key_pair()
click to toggle source
# File lib/akashi/builder.rb, line 57 def create_key_pair Akashi::Ec2::KeyPair.create end
create_load_balancer()
click to toggle source
# File lib/akashi/builder.rb, line 93 def create_load_balancer @load_balancer = Akashi::Elb::LoadBalancer.create( security_group: security_group[:elb], subnets: subnets[:elb], ssl_certificate: @ssl_certificate, ) @load_balancer.register_instances(ec2_instances[:web]) end
create_security_groups()
click to toggle source
# File lib/akashi/builder.rb, line 51 def create_security_groups Akashi.manifest.role.each do |role_name, role| security_group[role_name] = Akashi.klass(:vpc, :security_group, role_name).create(vpc: @vpc) end end
create_ssl_certificate()
click to toggle source
# File lib/akashi/builder.rb, line 18 def create_ssl_certificate @ssl_certificate = !!Akashi.manifest.elb.ssl_certificate.name ? Akashi::Elb::SslCertificate.find_by(name: Akashi.manifest.elb.ssl_certificate.name) : Akashi::Elb::SslCertificate.create end
create_subnet_group()
click to toggle source
# File lib/akashi/builder.rb, line 85 def create_subnet_group @subnet_group = Akashi::Rds::SubnetGroup.create(subnets: subnets[:rds]) end
create_subnets()
click to toggle source
# File lib/akashi/builder.rb, line 38 def create_subnets Akashi.manifest.role.each do |role_name, role| role.subnets.each do |subnet| subnets[role_name] << Akashi.klass(:vpc, :subnet, role_name). create(vpc: @vpc, availability_zone: subnet.availability_zone) end if !!role.internet_connection subnets[role_name].each { |subnet| subnet.route_table = @route_table } end end end
create_vpc()
click to toggle source
# File lib/akashi/builder.rb, line 24 def create_vpc @vpc = Akashi::Vpc::Instance.create @route_table = Akashi::Vpc::RouteTable.find_by(vpc_id: @vpc.id) @route_table.name = Akashi.name end
ec2_instances()
click to toggle source
# File lib/akashi/builder.rb, line 102 def ec2_instances @ec2_instances ||= Hashie::Mash.new.tap do |_ec2_instances| Akashi.role_names.each { |role_name| _ec2_instances[role_name] = [] } end end
security_group()
click to toggle source
# File lib/akashi/builder.rb, line 108 def security_group @security_group ||= Hashie::Mash.new end
subnets()
click to toggle source
# File lib/akashi/builder.rb, line 112 def subnets @subnets ||= Hashie::Mash.new.tap do |_subnets| Akashi.role_names.each { |role_name| _subnets[role_name] = [] } end end