akashi 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +39 -0
- data/LICENSE.txt +22 -0
- data/README.md +66 -0
- data/Rakefile +1 -0
- data/akashi.gemspec +27 -0
- data/config/application_enviroment.yml.example +43 -0
- data/config/aws.yml.exapmle +3 -0
- data/lib/akashi/aws.rb +37 -0
- data/lib/akashi/base.rb +50 -0
- data/lib/akashi/ec2/ami.rb +14 -0
- data/lib/akashi/ec2/base.rb +19 -0
- data/lib/akashi/ec2/instance.rb +43 -0
- data/lib/akashi/ec2/key_pair.rb +22 -0
- data/lib/akashi/ec2/monkey_patch.rb +7 -0
- data/lib/akashi/ec2.rb +10 -0
- data/lib/akashi/elb/base.rb +11 -0
- data/lib/akashi/elb/load_balancer.rb +53 -0
- data/lib/akashi/elb/ssl_certificate.rb +44 -0
- data/lib/akashi/elb.rb +8 -0
- data/lib/akashi/rds/base.rb +11 -0
- data/lib/akashi/rds/db_instance.rb +43 -0
- data/lib/akashi/rds/subnet_group.rb +18 -0
- data/lib/akashi/rds.rb +8 -0
- data/lib/akashi/version.rb +3 -0
- data/lib/akashi/vpc/base.rb +6 -0
- data/lib/akashi/vpc/instance.rb +33 -0
- data/lib/akashi/vpc/internet_gateway.rb +20 -0
- data/lib/akashi/vpc/route_table.rb +14 -0
- data/lib/akashi/vpc/security_group/base.rb +47 -0
- data/lib/akashi/vpc/security_group/elb.rb +18 -0
- data/lib/akashi/vpc/security_group/gateway.rb +22 -0
- data/lib/akashi/vpc/security_group/rds.rb +21 -0
- data/lib/akashi/vpc/security_group/web.rb +35 -0
- data/lib/akashi/vpc/security_group.rb +13 -0
- data/lib/akashi/vpc/subnet/base.rb +98 -0
- data/lib/akashi/vpc/subnet/elb.rb +13 -0
- data/lib/akashi/vpc/subnet/gateway.rb +13 -0
- data/lib/akashi/vpc/subnet/rds.rb +13 -0
- data/lib/akashi/vpc/subnet/web.rb +13 -0
- data/lib/akashi/vpc/subnet.rb +13 -0
- data/lib/akashi/vpc.rb +11 -0
- data/lib/akashi.rb +110 -0
- metadata +160 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class Instance < Akashi::Vpc::Base
|
4
|
+
def_delegators :@object, :cidr_block, :instance_tenancy, :state
|
5
|
+
|
6
|
+
def internet_gateway=(internet_gateway)
|
7
|
+
@object.internet_gateway = internet_gateway.id
|
8
|
+
puts "Attached an InternetGateway (#{internet_gateway.id}) to a VPC (#{id})."
|
9
|
+
end
|
10
|
+
alias attach_internet_gateway internet_gateway=
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def create
|
14
|
+
response = Akashi::Aws.ec2.client.create_vpc(
|
15
|
+
cidr_block: "10.0.0.0/16",
|
16
|
+
instance_tenancy: "default",
|
17
|
+
)
|
18
|
+
|
19
|
+
new(response[:vpc][:vpc_id]).tap do |instance|
|
20
|
+
instance.name = Akashi.name
|
21
|
+
|
22
|
+
route_table = Akashi::Vpc::RouteTable.find_by(vpc_id: instance.id)
|
23
|
+
puts "Created a VPC (#{instance.id}). RouteTable is \"#{route_table.id}\"."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def object_class
|
28
|
+
@object_class ||= "VPC"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class InternetGateway < Akashi::Vpc::Base
|
4
|
+
def attach(vpc)
|
5
|
+
@object.attach(vpc.id)
|
6
|
+
end
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def create
|
10
|
+
response = Akashi::Aws.ec2.client.create_internet_gateway
|
11
|
+
|
12
|
+
new(response[:internet_gateway][:internet_gateway_id]).tap do |instance|
|
13
|
+
instance.name = Akashi.name
|
14
|
+
puts "Created an InternetGateway (#{instance.id})."
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class RouteTable < Akashi::Vpc::Base
|
4
|
+
def vpc_id
|
5
|
+
@object.vpc.id
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_route(internet_gateway:)
|
9
|
+
@object.create_route("0.0.0.0/0", internet_gateway: internet_gateway.id)
|
10
|
+
puts "Created a Route to an InternetGateway (#{internet_gateway.id}) on a RouteTable (#{id})."
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class SecurityGroup
|
4
|
+
class Base < Akashi::Vpc::Base
|
5
|
+
def_delegators :@object, :description, :name, :vpc_id, :authorize_ingress
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def all
|
9
|
+
super.select { |security_group| security_group.name.end_with?("-#{role}") }
|
10
|
+
end
|
11
|
+
|
12
|
+
def create(vpc:)
|
13
|
+
response = Akashi::Aws.ec2.client.create_security_group(
|
14
|
+
vpc_id: vpc.id,
|
15
|
+
group_name: name,
|
16
|
+
description: name,
|
17
|
+
)
|
18
|
+
|
19
|
+
new(response[:group_id]).tap do |instance|
|
20
|
+
ingress_ip_permissions.each do |ip_permission|
|
21
|
+
instance.authorize_ingress(
|
22
|
+
ip_permission[:protocol],
|
23
|
+
ip_permission[:port],
|
24
|
+
*ip_permission[:sources],
|
25
|
+
)
|
26
|
+
end
|
27
|
+
instance.name = name
|
28
|
+
puts "Created a SecurityGroup (#{instance.id}) whose role is \"#{role}\"."
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def name
|
33
|
+
"#{Akashi.name}-#{role}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def role
|
37
|
+
self.to_s.demodulize.underscore.dasherize
|
38
|
+
end
|
39
|
+
|
40
|
+
def object_class
|
41
|
+
@object_class ||= "SecurityGroup"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class SecurityGroup
|
4
|
+
class Elb < Akashi::Vpc::SecurityGroup::Base
|
5
|
+
class << self
|
6
|
+
def ingress_ip_permissions
|
7
|
+
@ingress_ip_permissions ||= [
|
8
|
+
{
|
9
|
+
protocol: :tcp,
|
10
|
+
port: 443,
|
11
|
+
}
|
12
|
+
]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class SecurityGroup
|
4
|
+
class Gateway < Akashi::Vpc::SecurityGroup::Base
|
5
|
+
class << self
|
6
|
+
def ingress_ip_permissions
|
7
|
+
@ingress_ip_permissions ||= [
|
8
|
+
{
|
9
|
+
protocol: :tcp,
|
10
|
+
port: 9922,
|
11
|
+
},
|
12
|
+
{
|
13
|
+
protocol: :icmp,
|
14
|
+
port: -1,
|
15
|
+
},
|
16
|
+
]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class SecurityGroup
|
4
|
+
class Rds < Akashi::Vpc::SecurityGroup::Base
|
5
|
+
class << self
|
6
|
+
def ingress_ip_permissions
|
7
|
+
@ingress_ip_permissions ||= [
|
8
|
+
{
|
9
|
+
protocol: :tcp,
|
10
|
+
port: 3306,
|
11
|
+
sources: [
|
12
|
+
"10.0.96.0/19",
|
13
|
+
],
|
14
|
+
},
|
15
|
+
]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Akashi
|
2
|
+
class Vpc
|
3
|
+
class SecurityGroup
|
4
|
+
class Web < Akashi::Vpc::SecurityGroup::Base
|
5
|
+
class << self
|
6
|
+
def ingress_ip_permissions
|
7
|
+
@ingress_ip_permissions ||= [
|
8
|
+
{
|
9
|
+
protocol: :tcp,
|
10
|
+
port: 80,
|
11
|
+
sources: [
|
12
|
+
"10.0.0.0/19",
|
13
|
+
],
|
14
|
+
},
|
15
|
+
{
|
16
|
+
protocol: :tcp,
|
17
|
+
port: 9922,
|
18
|
+
sources: [
|
19
|
+
"10.0.32.0/19",
|
20
|
+
],
|
21
|
+
},
|
22
|
+
{
|
23
|
+
protocol: :icmp,
|
24
|
+
port: -1,
|
25
|
+
sources: [
|
26
|
+
"10.0.32.0/19",
|
27
|
+
],
|
28
|
+
},
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "akashi/vpc/security_group/base"
|
2
|
+
require "akashi/vpc/security_group/elb"
|
3
|
+
require "akashi/vpc/security_group/gateway"
|
4
|
+
require "akashi/vpc/security_group/rds"
|
5
|
+
require "akashi/vpc/security_group/web"
|
6
|
+
|
7
|
+
module Akashi
|
8
|
+
class Vpc
|
9
|
+
# Not implemented
|
10
|
+
class SecurityGroup
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require "ipaddr"
|
2
|
+
|
3
|
+
module Akashi
|
4
|
+
class Vpc
|
5
|
+
class Subnet
|
6
|
+
class Base < Akashi::Vpc::Base
|
7
|
+
def_delegators :@object, :availability_zone_name,
|
8
|
+
:available_ip_address_count, :state, :vpc_id
|
9
|
+
|
10
|
+
def cidr_block
|
11
|
+
IPAddr.new(@object.cidr_block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def number
|
15
|
+
name.slice(/(?<=-)\d{2}\Z/)
|
16
|
+
end
|
17
|
+
|
18
|
+
def route_table=(route_table)
|
19
|
+
@object.route_table = route_table.id
|
20
|
+
puts "A Subnet (#{id}) associated with a RouteTable (#{route_table.id})."
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
def all
|
25
|
+
super.select { |subnet| base_cidr_block.include?(subnet.cidr_block) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def create(vpc:, availability_zone:)
|
29
|
+
response = Akashi::Aws.ec2.client.create_subnet(
|
30
|
+
vpc_id: vpc.id,
|
31
|
+
availability_zone: availability_zone,
|
32
|
+
cidr_block: next_cidr_block(vpc: vpc).to_s + "/#{cidr}",
|
33
|
+
)
|
34
|
+
|
35
|
+
new(response[:subnet][:subnet_id]).tap do |instance|
|
36
|
+
instance.name = name(vpc: vpc)
|
37
|
+
puts <<-EOS
|
38
|
+
Created a Subnet (#{instance.id}) whose role is "#{role}". Availability zone is "#{instance.availability_zone_name}".
|
39
|
+
EOS
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def current_number(vpc:)
|
44
|
+
"%02d" % where(vpc_id: vpc.id).count
|
45
|
+
end
|
46
|
+
|
47
|
+
def next_cidr_block(vpc:)
|
48
|
+
_latest_cidr_block = latest_cidr_block(vpc: vpc)
|
49
|
+
|
50
|
+
IPAddr.new(
|
51
|
+
_latest_cidr_block ? _latest_cidr_block.to_i + step : base_cidr_block.to_s,
|
52
|
+
Socket::AF_INET,
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
def latest_cidr_block(vpc:)
|
57
|
+
where(vpc_id: vpc.id).map(&:cidr_block).max
|
58
|
+
end
|
59
|
+
|
60
|
+
# netmask #=> IPAddr.new(4294967040, Socket::AF_INET)
|
61
|
+
# step #=> 256
|
62
|
+
def step
|
63
|
+
@step ||= (~netmask).succ.to_i
|
64
|
+
end
|
65
|
+
|
66
|
+
# netmask_binary #=> "11111111111111111111111100000000"
|
67
|
+
# netmask #=> IPAddr.new(4294967040, Socket::AF_INET)
|
68
|
+
# netmask.to_s #=> "255.255.255.0"
|
69
|
+
def netmask
|
70
|
+
@netmask ||= IPAddr.new("0b#{netmask_binary}".oct, Socket::AF_INET)
|
71
|
+
end
|
72
|
+
|
73
|
+
# cidr #=> 24
|
74
|
+
# netmask_binary #=> "11111111111111111111111100000000"
|
75
|
+
def netmask_binary
|
76
|
+
@netmask_binary ||= ("1" * cidr).ljust(32, "0")
|
77
|
+
end
|
78
|
+
|
79
|
+
def cidr
|
80
|
+
@cidr ||= 24
|
81
|
+
end
|
82
|
+
|
83
|
+
def name(vpc:)
|
84
|
+
"#{Akashi.name}-#{role}-#{current_number(vpc: vpc)}"
|
85
|
+
end
|
86
|
+
|
87
|
+
def role
|
88
|
+
self.to_s.demodulize.underscore.dasherize
|
89
|
+
end
|
90
|
+
|
91
|
+
def object_class
|
92
|
+
@object_class ||= "Subnet"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "akashi/vpc/subnet/base"
|
2
|
+
require "akashi/vpc/subnet/elb"
|
3
|
+
require "akashi/vpc/subnet/gateway"
|
4
|
+
require "akashi/vpc/subnet/rds"
|
5
|
+
require "akashi/vpc/subnet/web"
|
6
|
+
|
7
|
+
module Akashi
|
8
|
+
class Vpc
|
9
|
+
# Not implemented
|
10
|
+
class Subnet
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/akashi/vpc.rb
ADDED
data/lib/akashi.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require "active_support/core_ext"
|
2
|
+
require "hashie/mash"
|
3
|
+
require "akashi/aws"
|
4
|
+
require "akashi/base"
|
5
|
+
require "akashi/ec2"
|
6
|
+
require "akashi/elb"
|
7
|
+
require "akashi/rds"
|
8
|
+
require "akashi/vpc"
|
9
|
+
require "akashi/version"
|
10
|
+
|
11
|
+
module Akashi
|
12
|
+
class << self
|
13
|
+
attr_accessor :application, :environment
|
14
|
+
attr_reader :manifest
|
15
|
+
|
16
|
+
def manifest=(new_value)
|
17
|
+
@manifest = Hashie::Mash.new(new_value)
|
18
|
+
unless @manifest.role.all? { |role_name, _| role_names.include?(role_name.intern) }
|
19
|
+
fail "Unknown role exists"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def build
|
24
|
+
vpc = Akashi::Vpc::Instance.create
|
25
|
+
|
26
|
+
route_table = Akashi::Vpc::RouteTable.find_by(vpc_id: vpc.id)
|
27
|
+
route_table.name = Akashi.name
|
28
|
+
|
29
|
+
internet_gateway = Akashi::Vpc::InternetGateway.create
|
30
|
+
vpc.attach_internet_gateway(internet_gateway)
|
31
|
+
route_table.create_route(internet_gateway: internet_gateway)
|
32
|
+
|
33
|
+
ssl_certificate = Akashi::Elb::SslCertificate.create
|
34
|
+
|
35
|
+
Akashi::Ec2::KeyPair.create
|
36
|
+
|
37
|
+
manifest.role.each do |role_name, role|
|
38
|
+
subnets[role_name] = []
|
39
|
+
subnet_class = klass(:vpc, :subnet, role_name)
|
40
|
+
security_group_class = klass(:vpc, :security_group, role_name)
|
41
|
+
|
42
|
+
security_group[role_name] = security_group_class.create(vpc: vpc)
|
43
|
+
|
44
|
+
role.subnets.each do |subnet|
|
45
|
+
_subnet = subnet_class.create(vpc: vpc, availability_zone: subnet.availability_zone)
|
46
|
+
subnets[role_name] << _subnet
|
47
|
+
|
48
|
+
if !!subnet.instance
|
49
|
+
ami = Akashi::Ec2::Ami.find(subnet.instance.ami_id)
|
50
|
+
|
51
|
+
(subnet.instance.number_of_instances || 1).times do
|
52
|
+
Akashi::Ec2::Instance.create(
|
53
|
+
ami: ami,
|
54
|
+
instance_class: subnet.instance.instance_class,
|
55
|
+
security_group: security_group[role_name],
|
56
|
+
subnet: _subnet,
|
57
|
+
allocated_storage: subnet.instance.allocated_storage,
|
58
|
+
)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
if !!role.internet_connection
|
64
|
+
subnets[role_name].each { |subnet| subnet.route_table = route_table }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
Akashi::Rds::SubnetGroup.create(subnets: subnets[:rds])
|
69
|
+
Akashi::Rds::DbInstance.create(security_group: security_group[:rds])
|
70
|
+
|
71
|
+
Akashi::Elb::LoadBalancer.create(
|
72
|
+
security_group: security_group[:elb],
|
73
|
+
subnets: subnets[:elb],
|
74
|
+
ssl_certificate: ssl_certificate,
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
def destroy
|
79
|
+
fail "Not implemented"
|
80
|
+
end
|
81
|
+
|
82
|
+
def name(separator: "-")
|
83
|
+
fail "Invalid configurations" unless (!!application && !!environment)
|
84
|
+
application + separator + environment
|
85
|
+
end
|
86
|
+
|
87
|
+
def klass(service, object, role = nil)
|
88
|
+
context = "Akashi::#{service.to_s.camelize}::#{object.to_s.camelize}"
|
89
|
+
context << "::#{role.to_s.camelize}" if !!role
|
90
|
+
context.constantize
|
91
|
+
end
|
92
|
+
|
93
|
+
def subnets
|
94
|
+
@subnets ||= Hashie::Mash.new
|
95
|
+
end
|
96
|
+
|
97
|
+
def security_group
|
98
|
+
@security_group ||= Hashie::Mash.new
|
99
|
+
end
|
100
|
+
|
101
|
+
def role_names
|
102
|
+
@role_names ||= [
|
103
|
+
:elb,
|
104
|
+
:gateway,
|
105
|
+
:rds,
|
106
|
+
:web,
|
107
|
+
]
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
metadata
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: akashi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- asonas
|
8
|
+
- int_remain
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-06-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: aws-sdk
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: hashie
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: bundler
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.3'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.3'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
description: Wrapping aws-sdk
|
85
|
+
email:
|
86
|
+
- hzw1258@gmail.com
|
87
|
+
- ponde.ponde.ponde@gmail.com
|
88
|
+
executables: []
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- ".gitignore"
|
93
|
+
- Gemfile
|
94
|
+
- Gemfile.lock
|
95
|
+
- LICENSE.txt
|
96
|
+
- README.md
|
97
|
+
- Rakefile
|
98
|
+
- akashi.gemspec
|
99
|
+
- config/application_enviroment.yml.example
|
100
|
+
- config/aws.yml.exapmle
|
101
|
+
- lib/akashi.rb
|
102
|
+
- lib/akashi/aws.rb
|
103
|
+
- lib/akashi/base.rb
|
104
|
+
- lib/akashi/ec2.rb
|
105
|
+
- lib/akashi/ec2/ami.rb
|
106
|
+
- lib/akashi/ec2/base.rb
|
107
|
+
- lib/akashi/ec2/instance.rb
|
108
|
+
- lib/akashi/ec2/key_pair.rb
|
109
|
+
- lib/akashi/ec2/monkey_patch.rb
|
110
|
+
- lib/akashi/elb.rb
|
111
|
+
- lib/akashi/elb/base.rb
|
112
|
+
- lib/akashi/elb/load_balancer.rb
|
113
|
+
- lib/akashi/elb/ssl_certificate.rb
|
114
|
+
- lib/akashi/rds.rb
|
115
|
+
- lib/akashi/rds/base.rb
|
116
|
+
- lib/akashi/rds/db_instance.rb
|
117
|
+
- lib/akashi/rds/subnet_group.rb
|
118
|
+
- lib/akashi/version.rb
|
119
|
+
- lib/akashi/vpc.rb
|
120
|
+
- lib/akashi/vpc/base.rb
|
121
|
+
- lib/akashi/vpc/instance.rb
|
122
|
+
- lib/akashi/vpc/internet_gateway.rb
|
123
|
+
- lib/akashi/vpc/route_table.rb
|
124
|
+
- lib/akashi/vpc/security_group.rb
|
125
|
+
- lib/akashi/vpc/security_group/base.rb
|
126
|
+
- lib/akashi/vpc/security_group/elb.rb
|
127
|
+
- lib/akashi/vpc/security_group/gateway.rb
|
128
|
+
- lib/akashi/vpc/security_group/rds.rb
|
129
|
+
- lib/akashi/vpc/security_group/web.rb
|
130
|
+
- lib/akashi/vpc/subnet.rb
|
131
|
+
- lib/akashi/vpc/subnet/base.rb
|
132
|
+
- lib/akashi/vpc/subnet/elb.rb
|
133
|
+
- lib/akashi/vpc/subnet/gateway.rb
|
134
|
+
- lib/akashi/vpc/subnet/rds.rb
|
135
|
+
- lib/akashi/vpc/subnet/web.rb
|
136
|
+
homepage: https://github.com/spice-life/akashi
|
137
|
+
licenses:
|
138
|
+
- MIT
|
139
|
+
metadata: {}
|
140
|
+
post_install_message:
|
141
|
+
rdoc_options: []
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
requirements: []
|
155
|
+
rubyforge_project:
|
156
|
+
rubygems_version: 2.2.0
|
157
|
+
signing_key:
|
158
|
+
specification_version: 4
|
159
|
+
summary: Wrapping awd-sdk
|
160
|
+
test_files: []
|