cf_factory 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/cf_factory +9 -9
- data/examples/base_vpc.rb +40 -40
- data/examples/cloudfront_private.rb +23 -23
- data/examples/cloudinit_script_for_one_instance.rb +77 -77
- data/examples/cloudinit_script_with_autoscaling.rb +85 -85
- data/examples/dynamodb_table.rb +24 -24
- data/examples/elastic_beanstalk_example.rb +23 -23
- data/examples/elb_with_cloudfront.rb +100 -100
- data/examples/instance_with_eip.rb +40 -40
- data/examples/instance_with_yum.rb +40 -40
- data/examples/just_an_instance.rb +31 -31
- data/examples/nat_mutual_monitoring.rb +69 -69
- data/examples/play_with_region_and_zones.rb +28 -28
- data/examples/ra_web_hosting.rb +148 -148
- data/examples/s3_with_cloudfront.rb +35 -35
- data/examples/test_vpc.rb +61 -61
- data/lib/cf_factory/as/cf_as_group.rb +80 -77
- data/lib/cf_factory/as/cf_as_launch_config.rb +55 -55
- data/lib/cf_factory/as/cf_as_scaling_policy.rb +35 -35
- data/lib/cf_factory/as/cf_as_update_policy.rb +23 -0
- data/lib/cf_factory/base/cf_base.rb +112 -102
- data/lib/cf_factory/base/cf_ec2_tag.rb +34 -34
- data/lib/cf_factory/base/cf_generator.rb +20 -20
- data/lib/cf_factory/base/cf_helper.rb +93 -93
- data/lib/cf_factory/base/cf_inner.rb +74 -74
- data/lib/cf_factory/base/cf_main.rb +103 -103
- data/lib/cf_factory/base/cf_mapping.rb +28 -28
- data/lib/cf_factory/base/cf_named_inner.rb +70 -1
- data/lib/cf_factory/base/cf_output.rb +26 -26
- data/lib/cf_factory/base/cf_parameter.rb +27 -27
- data/lib/cf_factory/base/cf_script_reader.rb +34 -34
- data/lib/cf_factory/cloudformation/cf_cloud_formation_init.rb +27 -27
- data/lib/cf_factory/cloudformation/cf_cloudformation_command.rb +39 -39
- data/lib/cf_factory/cloudformation/cf_cloudformation_commands.rb +27 -27
- data/lib/cf_factory/cloudformation/cf_cloudformation_config.rb +35 -35
- data/lib/cf_factory/cloudformation/cf_cloudformation_file.rb +40 -40
- data/lib/cf_factory/cloudformation/cf_cloudformation_files.rb +27 -27
- data/lib/cf_factory/cloudformation/cf_cloudformation_inner.rb +30 -30
- data/lib/cf_factory/cloudformation/cf_cloudformation_package.rb +36 -36
- data/lib/cf_factory/cloudformation/cf_cloudformation_packages.rb +44 -44
- data/lib/cf_factory/cloudformation/cf_cloudformation_sources.rb +32 -32
- data/lib/cf_factory/cloudformation/cf_init_script.rb +80 -80
- data/lib/cf_factory/cloudfront/cf_cache_behavior.rb +39 -39
- data/lib/cf_factory/cloudfront/cf_cache_behaviors.rb +30 -30
- data/lib/cf_factory/cloudfront/cf_cloudfront_distribution.rb +66 -66
- data/lib/cf_factory/cloudfront/cf_custom_origin_config.rb +39 -39
- data/lib/cf_factory/cloudfront/cf_default_cache_behavior.rb +34 -34
- data/lib/cf_factory/cloudfront/cf_distribution_config.rb +33 -33
- data/lib/cf_factory/cloudfront/cf_forwarded_values.rb +27 -27
- data/lib/cf_factory/cloudfront/cf_logging.rb +26 -26
- data/lib/cf_factory/cloudfront/cf_origin.rb +42 -42
- data/lib/cf_factory/cloudfront/cf_s3_origin_config.rb +27 -27
- data/lib/cf_factory/cloudwatch/cf_cloud_watch_alarm.rb +60 -60
- data/lib/cf_factory/dynamo/cf_dynamo_table.rb +45 -45
- data/lib/cf_factory/eb/cd_eb_solution_stack.rb +27 -28
- data/lib/cf_factory/eb/cf_eb_application.rb +41 -41
- data/lib/cf_factory/eb/cf_eb_application_version.rb +24 -24
- data/lib/cf_factory/eb/cf_eb_configuration_template.rb +36 -36
- data/lib/cf_factory/eb/cf_eb_environment.rb +56 -56
- data/lib/cf_factory/eb/cf_eb_option_setting.rb +19 -19
- data/lib/cf_factory/ec2/cf_ebs_volume.rb +56 -56
- data/lib/cf_factory/ec2/cf_ec2_instance.rb +80 -66
- data/lib/cf_factory/ec2/cf_ec2_security_group.rb +42 -42
- data/lib/cf_factory/ec2/cf_ec2_security_group_egress.rb +30 -30
- data/lib/cf_factory/ec2/cf_ec2_security_group_ingress.rb +41 -41
- data/lib/cf_factory/ec2/cf_eip.rb +28 -28
- data/lib/cf_factory/ec2/cf_eip_association.rb +33 -31
- data/lib/cf_factory/ec2/cf_inner_network_interface.rb +26 -0
- data/lib/cf_factory/ec2/cf_network_interface.rb +40 -0
- data/lib/cf_factory/elb/cf_app_cookie_stickiness_policy.rb +17 -17
- data/lib/cf_factory/elb/cf_elb.rb +51 -51
- data/lib/cf_factory/elb/cf_health_check.rb +25 -25
- data/lib/cf_factory/elb/cf_lb_cookie_stickiness_policy.rb +17 -17
- data/lib/cf_factory/elb/cf_listener.rb +28 -28
- data/lib/cf_factory/help/fixes.rb +15 -15
- data/lib/cf_factory/help/ip_mask.rb +167 -167
- data/lib/cf_factory/help/template_validation.rb +30 -30
- data/lib/cf_factory/iam/cf_iam_access_key.rb +34 -34
- data/lib/cf_factory/iam/cf_iam_group.rb +32 -32
- data/lib/cf_factory/iam/cf_iam_instance_profile.rb +32 -32
- data/lib/cf_factory/iam/cf_iam_policy.rb +20 -20
- data/lib/cf_factory/iam/cf_iam_role.rb +58 -58
- data/lib/cf_factory/iam/cf_iam_statement.rb +25 -25
- data/lib/cf_factory/iam/cf_iam_user.rb +36 -36
- data/lib/cf_factory/iam/cf_policy_document.rb +21 -21
- data/lib/cf_factory/modules/base_vpc.rb +63 -63
- data/lib/cf_factory/rds/cf_rds_instance.rb +55 -55
- data/lib/cf_factory/rds/cf_rds_security_group.rb +35 -35
- data/lib/cf_factory/rds/cf_rds_security_group_ingress.rb +31 -31
- data/lib/cf_factory/rds/cf_rds_subnet_group.rb +31 -31
- data/lib/cf_factory/route53/cf_elb_alias_target.rb +23 -23
- data/lib/cf_factory/route53/cf_record_set.rb +63 -63
- data/lib/cf_factory/route53/cf_route53_record_set.rb +63 -63
- data/lib/cf_factory/route53/cf_route53_record_set_group.rb +44 -44
- data/lib/cf_factory/s3/cf_s3_bucket.rb +34 -34
- data/lib/cf_factory/s3/cf_web_site_config.rb +26 -26
- data/lib/cf_factory/sqs/cf_sqs_queue.rb +28 -28
- data/lib/cf_factory/vpc/cf_attach_gateway.rb +30 -30
- data/lib/cf_factory/vpc/cf_internet_gateway.rb +32 -32
- data/lib/cf_factory/vpc/cf_network_acl.rb +41 -41
- data/lib/cf_factory/vpc/cf_network_acl_association.rb +26 -26
- data/lib/cf_factory/vpc/cf_network_acl_entry.rb +39 -39
- data/lib/cf_factory/vpc/cf_route.rb +45 -45
- data/lib/cf_factory/vpc/cf_route_table.rb +43 -43
- data/lib/cf_factory/vpc/cf_route_table_association.rb +26 -26
- data/lib/cf_factory/vpc/cf_subnet.rb +50 -50
- data/lib/cf_factory/vpc/cf_vpc.rb +66 -66
- data/lib/cf_factory.rb +12 -12
- metadata +120 -91
@@ -1,58 +1,58 @@
|
|
1
|
-
require 'cf_factory/base/cf_base'
|
2
|
-
require 'cf_factory/base/cf_helper'
|
3
|
-
require 'cf_factory/iam/cf_iam_instance_profile'
|
4
|
-
|
5
|
-
module CfFactory
|
6
|
-
class CfIamRole
|
7
|
-
include CfBase
|
8
|
-
|
9
|
-
def initialize(name, path, options)
|
10
|
-
@name = name
|
11
|
-
@path = path
|
12
|
-
@policies = options[:policies]
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_cf_type
|
16
|
-
"AWS::IAM::Role"
|
17
|
-
end
|
18
|
-
|
19
|
-
def get_cf_attributes
|
20
|
-
{}
|
21
|
-
end
|
22
|
-
|
23
|
-
def get_cf_properties
|
24
|
-
result = {
|
25
|
-
"Path" => @path,
|
26
|
-
"AssumeRolePolicyDocument" => assume_role_ec2() #no other supported right now
|
27
|
-
}
|
28
|
-
result["Policies"] = CfHelper.generate_inner_array(@policies) unless @policies.nil?
|
29
|
-
result
|
30
|
-
end
|
31
|
-
|
32
|
-
def generate
|
33
|
-
result = super
|
34
|
-
result += CfIamInstanceProfile.new(@name+"Profile", @path, [@name]).generate
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def assume_role_ec2
|
40
|
-
' {
|
41
|
-
"Statement":[
|
42
|
-
{
|
43
|
-
"Effect":"Allow",
|
44
|
-
"Principal":{
|
45
|
-
"Service":[
|
46
|
-
"ec2.amazonaws.com"
|
47
|
-
]
|
48
|
-
},
|
49
|
-
"Action":[
|
50
|
-
"sts:AssumeRole"
|
51
|
-
]
|
52
|
-
}
|
53
|
-
]
|
54
|
-
}'
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
1
|
+
require 'cf_factory/base/cf_base'
|
2
|
+
require 'cf_factory/base/cf_helper'
|
3
|
+
require 'cf_factory/iam/cf_iam_instance_profile'
|
4
|
+
|
5
|
+
module CfFactory
|
6
|
+
class CfIamRole
|
7
|
+
include CfBase
|
8
|
+
|
9
|
+
def initialize(name, path, options)
|
10
|
+
@name = name
|
11
|
+
@path = path
|
12
|
+
@policies = options[:policies]
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_cf_type
|
16
|
+
"AWS::IAM::Role"
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_cf_attributes
|
20
|
+
{}
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_cf_properties
|
24
|
+
result = {
|
25
|
+
"Path" => @path,
|
26
|
+
"AssumeRolePolicyDocument" => assume_role_ec2() #no other supported right now
|
27
|
+
}
|
28
|
+
result["Policies"] = CfHelper.generate_inner_array(@policies) unless @policies.nil?
|
29
|
+
result
|
30
|
+
end
|
31
|
+
|
32
|
+
def generate
|
33
|
+
result = super
|
34
|
+
result += CfIamInstanceProfile.new(@name+"Profile", @path, [@name]).generate
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def assume_role_ec2
|
40
|
+
' {
|
41
|
+
"Statement":[
|
42
|
+
{
|
43
|
+
"Effect":"Allow",
|
44
|
+
"Principal":{
|
45
|
+
"Service":[
|
46
|
+
"ec2.amazonaws.com"
|
47
|
+
]
|
48
|
+
},
|
49
|
+
"Action":[
|
50
|
+
"sts:AssumeRole"
|
51
|
+
]
|
52
|
+
}
|
53
|
+
]
|
54
|
+
}'
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -1,25 +1,25 @@
|
|
1
|
-
require 'cf_factory/base/cf_inner'
|
2
|
-
|
3
|
-
module CfFactory
|
4
|
-
class CfIamStatement
|
5
|
-
include CfInner
|
6
|
-
|
7
|
-
def initialize(effect, action, resource)
|
8
|
-
@effect = effect
|
9
|
-
@action = action
|
10
|
-
@resource = resource
|
11
|
-
end
|
12
|
-
|
13
|
-
def get_cf_attributes
|
14
|
-
{"Effect" => @effect,
|
15
|
-
"Action" => @action,
|
16
|
-
"Resource" => @resource
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
def additional_indent
|
21
|
-
4
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
1
|
+
require 'cf_factory/base/cf_inner'
|
2
|
+
|
3
|
+
module CfFactory
|
4
|
+
class CfIamStatement
|
5
|
+
include CfInner
|
6
|
+
|
7
|
+
def initialize(effect, action, resource)
|
8
|
+
@effect = effect
|
9
|
+
@action = action
|
10
|
+
@resource = resource
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_cf_attributes
|
14
|
+
{"Effect" => @effect,
|
15
|
+
"Action" => @action,
|
16
|
+
"Resource" => @resource
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def additional_indent
|
21
|
+
4
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -1,36 +1,36 @@
|
|
1
|
-
require 'cf_factory/base/cf_base'
|
2
|
-
require 'cf_factory/base/cf_helper'
|
3
|
-
require 'cf_factory/iam/cf_iam_instance_profile'
|
4
|
-
|
5
|
-
module CfFactory
|
6
|
-
class CfIamUser
|
7
|
-
include CfBase
|
8
|
-
|
9
|
-
def initialize(name, path, options = {})
|
10
|
-
@name = name
|
11
|
-
@path = path
|
12
|
-
@policies = options[:policies]
|
13
|
-
@login_profile = options[:login_profile]
|
14
|
-
@groups = options[:groups]
|
15
|
-
end
|
16
|
-
|
17
|
-
def get_cf_type
|
18
|
-
"AWS::IAM::User"
|
19
|
-
end
|
20
|
-
|
21
|
-
def get_cf_attributes
|
22
|
-
{}
|
23
|
-
end
|
24
|
-
|
25
|
-
def get_cf_properties
|
26
|
-
result = {
|
27
|
-
"Path" => @path
|
28
|
-
}
|
29
|
-
result["Policies"] = CfHelper.generate_inner_array(@policies) unless @policies.nil?
|
30
|
-
result["LoginProfile"] = "XXX" unless @login_profile.nil?
|
31
|
-
result["Groups"] = CfHelper.generate_ref_array(@groups) unless @groups.nil?
|
32
|
-
result
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
1
|
+
require 'cf_factory/base/cf_base'
|
2
|
+
require 'cf_factory/base/cf_helper'
|
3
|
+
require 'cf_factory/iam/cf_iam_instance_profile'
|
4
|
+
|
5
|
+
module CfFactory
|
6
|
+
class CfIamUser
|
7
|
+
include CfBase
|
8
|
+
|
9
|
+
def initialize(name, path, options = {})
|
10
|
+
@name = name
|
11
|
+
@path = path
|
12
|
+
@policies = options[:policies]
|
13
|
+
@login_profile = options[:login_profile]
|
14
|
+
@groups = options[:groups]
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_cf_type
|
18
|
+
"AWS::IAM::User"
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_cf_attributes
|
22
|
+
{}
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_cf_properties
|
26
|
+
result = {
|
27
|
+
"Path" => @path
|
28
|
+
}
|
29
|
+
result["Policies"] = CfHelper.generate_inner_array(@policies) unless @policies.nil?
|
30
|
+
result["LoginProfile"] = "XXX" unless @login_profile.nil?
|
31
|
+
result["Groups"] = CfHelper.generate_ref_array(@groups) unless @groups.nil?
|
32
|
+
result
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
require 'cf_factory/base/cf_inner'
|
2
|
-
|
3
|
-
module CfFactory
|
4
|
-
class CfPolicyDocument
|
5
|
-
include CfInner
|
6
|
-
|
7
|
-
def initialize(statements, additional_indent = 2)
|
8
|
-
@additional_indent = additional_indent
|
9
|
-
@statements = statements
|
10
|
-
end
|
11
|
-
|
12
|
-
def get_cf_attributes()
|
13
|
-
{"Statement" => CfHelper.generate_inner_array(@statements)}
|
14
|
-
end
|
15
|
-
|
16
|
-
def additional_indent
|
17
|
-
@additional_indent
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
1
|
+
require 'cf_factory/base/cf_inner'
|
2
|
+
|
3
|
+
module CfFactory
|
4
|
+
class CfPolicyDocument
|
5
|
+
include CfInner
|
6
|
+
|
7
|
+
def initialize(statements, additional_indent = 2)
|
8
|
+
@additional_indent = additional_indent
|
9
|
+
@statements = statements
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_cf_attributes()
|
13
|
+
{"Statement" => CfHelper.generate_inner_array(@statements)}
|
14
|
+
end
|
15
|
+
|
16
|
+
def additional_indent
|
17
|
+
@additional_indent
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -1,63 +1,63 @@
|
|
1
|
-
module CfFactory
|
2
|
-
class BaseVpc
|
3
|
-
attr_reader :vpc, :subnets, :private_route_table, :public_route_table
|
4
|
-
|
5
|
-
def initialize(name, cidr, number_public_subnets, number_private_subnets, availability_zones, subnet_size = 256)
|
6
|
-
@name = name
|
7
|
-
@cidr = cidr
|
8
|
-
@number_public_subnets = number_public_subnets
|
9
|
-
@number_private_subnets = number_private_subnets
|
10
|
-
@subnet_size = subnet_size
|
11
|
-
@availability_zones = availability_zones
|
12
|
-
setup()
|
13
|
-
end
|
14
|
-
|
15
|
-
def add_to_template(cf)
|
16
|
-
cf.add_vpc(@vpc)
|
17
|
-
end
|
18
|
-
|
19
|
-
def setup
|
20
|
-
define_vpc()
|
21
|
-
define_subnets()
|
22
|
-
end
|
23
|
-
|
24
|
-
def define_vpc
|
25
|
-
@vpc = CfVpc.new(@cidr)
|
26
|
-
igw = CfInternetGateway.new("#{@name}Igw", @vpc)
|
27
|
-
@vpc.add_internet_gateway(igw)
|
28
|
-
@private_route_table = CfRouteTable.new("#{@name}PrivRt")
|
29
|
-
@vpc.add_route_table(@private_route_table)
|
30
|
-
@public_route_table = CfRouteTable.new("#{@name}PubRt")
|
31
|
-
igw_route = CfRoute.new("IgwRoute", "0.0.0.0/0", igw)
|
32
|
-
@public_route_table.add_route(igw_route)
|
33
|
-
@vpc.add_route_table(@public_route_table)
|
34
|
-
end
|
35
|
-
|
36
|
-
def define_subnets
|
37
|
-
myMask = IpMask.create_from_cidr(@cidr)
|
38
|
-
puts "myMask = #{myMask.inspect}"
|
39
|
-
divider_array = [@subnet_size]*(@number_public_subnets + @number_private_subnets)
|
40
|
-
puts "divider_array = #{divider_array}"
|
41
|
-
subnet_ranges = myMask.divide_individually(divider_array)
|
42
|
-
puts "subnet ranges = #{subnet_ranges.inspect}"
|
43
|
-
@subnets = []
|
44
|
-
0.upto(@number_public_subnets-1) do |i|
|
45
|
-
@vpc.add_subnet(CfSubnet.new("#{@name}PublicSubnet#{i+1}", @cidr, @availability_zones[i%(@availability_zones.size)], @public_route_table))
|
46
|
-
end
|
47
|
-
0.upto(@number_private_subnets-1) do |i|
|
48
|
-
@vpc.add_subnet(CfSubnet.new("#{@name}PrivateSubnet#{i+1}", @cidr, @availability_zones[i%(@availability_zones.size)], @private_route_table))
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def ip2num(ip_part)
|
53
|
-
sum = 0
|
54
|
-
exp = 3
|
55
|
-
ip_part.split(".").each() {|ip|
|
56
|
-
sum += ip.to_i * (256 ** exp)
|
57
|
-
exp -= 1
|
58
|
-
}
|
59
|
-
sum
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
1
|
+
module CfFactory
|
2
|
+
class BaseVpc
|
3
|
+
attr_reader :vpc, :subnets, :private_route_table, :public_route_table
|
4
|
+
|
5
|
+
def initialize(name, cidr, number_public_subnets, number_private_subnets, availability_zones, subnet_size = 256)
|
6
|
+
@name = name
|
7
|
+
@cidr = cidr
|
8
|
+
@number_public_subnets = number_public_subnets
|
9
|
+
@number_private_subnets = number_private_subnets
|
10
|
+
@subnet_size = subnet_size
|
11
|
+
@availability_zones = availability_zones
|
12
|
+
setup()
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_to_template(cf)
|
16
|
+
cf.add_vpc(@vpc)
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup
|
20
|
+
define_vpc()
|
21
|
+
define_subnets()
|
22
|
+
end
|
23
|
+
|
24
|
+
def define_vpc
|
25
|
+
@vpc = CfVpc.new(@cidr)
|
26
|
+
igw = CfInternetGateway.new("#{@name}Igw", @vpc)
|
27
|
+
@vpc.add_internet_gateway(igw)
|
28
|
+
@private_route_table = CfRouteTable.new("#{@name}PrivRt")
|
29
|
+
@vpc.add_route_table(@private_route_table)
|
30
|
+
@public_route_table = CfRouteTable.new("#{@name}PubRt")
|
31
|
+
igw_route = CfRoute.new("IgwRoute", "0.0.0.0/0", igw)
|
32
|
+
@public_route_table.add_route(igw_route)
|
33
|
+
@vpc.add_route_table(@public_route_table)
|
34
|
+
end
|
35
|
+
|
36
|
+
def define_subnets
|
37
|
+
myMask = IpMask.create_from_cidr(@cidr)
|
38
|
+
puts "myMask = #{myMask.inspect}"
|
39
|
+
divider_array = [@subnet_size]*(@number_public_subnets + @number_private_subnets)
|
40
|
+
puts "divider_array = #{divider_array}"
|
41
|
+
subnet_ranges = myMask.divide_individually(divider_array)
|
42
|
+
puts "subnet ranges = #{subnet_ranges.inspect}"
|
43
|
+
@subnets = []
|
44
|
+
0.upto(@number_public_subnets-1) do |i|
|
45
|
+
@vpc.add_subnet(CfSubnet.new("#{@name}PublicSubnet#{i+1}", @cidr, @availability_zones[i%(@availability_zones.size)], @public_route_table))
|
46
|
+
end
|
47
|
+
0.upto(@number_private_subnets-1) do |i|
|
48
|
+
@vpc.add_subnet(CfSubnet.new("#{@name}PrivateSubnet#{i+1}", @cidr, @availability_zones[i%(@availability_zones.size)], @private_route_table))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def ip2num(ip_part)
|
53
|
+
sum = 0
|
54
|
+
exp = 3
|
55
|
+
ip_part.split(".").each() {|ip|
|
56
|
+
sum += ip.to_i * (256 ** exp)
|
57
|
+
exp -= 1
|
58
|
+
}
|
59
|
+
sum
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -1,55 +1,55 @@
|
|
1
|
-
require 'cf_factory/base/cf_base'
|
2
|
-
require 'cf_factory/base/cf_helper'
|
3
|
-
|
4
|
-
module CfFactory
|
5
|
-
class CfRdsInstance
|
6
|
-
VALID_TYPES = ["db.t1.micro", "db.m1.small","db.m1.medium","db.m1.large","db.m1.xlarge","db.m2.xlarge","db.m2.2xlarge","db.m2.4xlarge"]
|
7
|
-
include CfBase
|
8
|
-
|
9
|
-
def initialize(name, allocated_storage, engine, db_instance_class, master_username, master_userpassword, options = {})
|
10
|
-
@name = name
|
11
|
-
@allocated_storage = allocated_storage
|
12
|
-
@db_instance_class = db_instance_class
|
13
|
-
@engine = engine
|
14
|
-
@master_username = master_username
|
15
|
-
@master_userpassword = master_userpassword
|
16
|
-
@multi_az = options[:multi_az]
|
17
|
-
@security_groups = options[:security_groups]
|
18
|
-
@subnet_group = options[:subnet_group]
|
19
|
-
validate()
|
20
|
-
end
|
21
|
-
|
22
|
-
def get_cf_type
|
23
|
-
"AWS::RDS::DBInstance"
|
24
|
-
end
|
25
|
-
|
26
|
-
def get_cf_attributes
|
27
|
-
{}
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_cf_properties
|
31
|
-
result = {"AllocatedStorage" => @allocated_storage,
|
32
|
-
"DBInstanceClass" => @db_instance_class,
|
33
|
-
"Engine" => @engine, "MasterUsername" => @master_username,
|
34
|
-
"MasterUserPassword" => @master_userpassword
|
35
|
-
}
|
36
|
-
result["MultiAZ"] = @multi_az unless @multi_az.nil?
|
37
|
-
result["DBSecurityGroups"] = CfHelper.generate_ref_array(@security_groups) unless @security_groups.nil?
|
38
|
-
result["DBSubnetGroupName"] = @subnet_group.generate_ref unless @subnet_group.nil?
|
39
|
-
result
|
40
|
-
end
|
41
|
-
|
42
|
-
def add_rule(ingress_rule)
|
43
|
-
@rules << ingress_rule
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def validate
|
49
|
-
if !VALID_TYPES.include?(@db_instance_class)
|
50
|
-
raise Exception.new("invalid type '#{@db_instance_class}' - supported classes are #{@VALID_TYPES.inspect}")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
1
|
+
require 'cf_factory/base/cf_base'
|
2
|
+
require 'cf_factory/base/cf_helper'
|
3
|
+
|
4
|
+
module CfFactory
|
5
|
+
class CfRdsInstance
|
6
|
+
VALID_TYPES = ["db.t1.micro", "db.m1.small","db.m1.medium","db.m1.large","db.m1.xlarge","db.m2.xlarge","db.m2.2xlarge","db.m2.4xlarge"]
|
7
|
+
include CfBase
|
8
|
+
|
9
|
+
def initialize(name, allocated_storage, engine, db_instance_class, master_username, master_userpassword, options = {})
|
10
|
+
@name = name
|
11
|
+
@allocated_storage = allocated_storage
|
12
|
+
@db_instance_class = db_instance_class
|
13
|
+
@engine = engine
|
14
|
+
@master_username = master_username
|
15
|
+
@master_userpassword = master_userpassword
|
16
|
+
@multi_az = options[:multi_az]
|
17
|
+
@security_groups = options[:security_groups]
|
18
|
+
@subnet_group = options[:subnet_group]
|
19
|
+
validate()
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_cf_type
|
23
|
+
"AWS::RDS::DBInstance"
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_cf_attributes
|
27
|
+
{}
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_cf_properties
|
31
|
+
result = {"AllocatedStorage" => @allocated_storage,
|
32
|
+
"DBInstanceClass" => @db_instance_class,
|
33
|
+
"Engine" => @engine, "MasterUsername" => @master_username,
|
34
|
+
"MasterUserPassword" => @master_userpassword
|
35
|
+
}
|
36
|
+
result["MultiAZ"] = @multi_az unless @multi_az.nil?
|
37
|
+
result["DBSecurityGroups"] = CfHelper.generate_ref_array(@security_groups) unless @security_groups.nil?
|
38
|
+
result["DBSubnetGroupName"] = @subnet_group.generate_ref unless @subnet_group.nil?
|
39
|
+
result
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_rule(ingress_rule)
|
43
|
+
@rules << ingress_rule
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def validate
|
49
|
+
if !VALID_TYPES.include?(@db_instance_class)
|
50
|
+
raise Exception.new("invalid type '#{@db_instance_class}' - supported classes are #{@VALID_TYPES.inspect}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -1,35 +1,35 @@
|
|
1
|
-
require 'cf_factory/base/cf_base'
|
2
|
-
require 'cf_factory/base/cf_helper'
|
3
|
-
|
4
|
-
module CfFactory
|
5
|
-
class CfRdsSecurityGroup
|
6
|
-
include CfBase
|
7
|
-
|
8
|
-
def initialize(name, description, vpc = nil)
|
9
|
-
@name = name
|
10
|
-
@description = description
|
11
|
-
@vpc = vpc
|
12
|
-
@rules = []
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_cf_type
|
16
|
-
"AWS::RDS::DBSecurityGroup"
|
17
|
-
end
|
18
|
-
|
19
|
-
def get_cf_attributes
|
20
|
-
{}
|
21
|
-
end
|
22
|
-
|
23
|
-
def get_cf_properties
|
24
|
-
rules_array = CfHelper.generate_inner_array(@rules)
|
25
|
-
result = {"GroupDescription" => @description, "DBSecurityGroupIngress" => rules_array}
|
26
|
-
result["EC2VpcId"] = @vpc.generate_ref unless @vpc.nil?
|
27
|
-
result
|
28
|
-
end
|
29
|
-
|
30
|
-
def add_rule(ingress_rule)
|
31
|
-
@rules << ingress_rule
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
1
|
+
require 'cf_factory/base/cf_base'
|
2
|
+
require 'cf_factory/base/cf_helper'
|
3
|
+
|
4
|
+
module CfFactory
|
5
|
+
class CfRdsSecurityGroup
|
6
|
+
include CfBase
|
7
|
+
|
8
|
+
def initialize(name, description, vpc = nil)
|
9
|
+
@name = name
|
10
|
+
@description = description
|
11
|
+
@vpc = vpc
|
12
|
+
@rules = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_cf_type
|
16
|
+
"AWS::RDS::DBSecurityGroup"
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_cf_attributes
|
20
|
+
{}
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_cf_properties
|
24
|
+
rules_array = CfHelper.generate_inner_array(@rules)
|
25
|
+
result = {"GroupDescription" => @description, "DBSecurityGroupIngress" => rules_array}
|
26
|
+
result["EC2VpcId"] = @vpc.generate_ref unless @vpc.nil?
|
27
|
+
result
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_rule(ingress_rule)
|
31
|
+
@rules << ingress_rule
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -1,31 +1,31 @@
|
|
1
|
-
require 'cf_factory/base/cf_inner'
|
2
|
-
|
3
|
-
module CfFactory
|
4
|
-
class CfRdsSecurityGroupIngress
|
5
|
-
include CfInner
|
6
|
-
|
7
|
-
def initialize(cidr = nil, ec2_sec_group = nil, ec2_sec_group_owner_id = nil)
|
8
|
-
@cidr = cidr
|
9
|
-
@ec2_sec_group = ec2_sec_group
|
10
|
-
@ec2_sec_group_owner_id = ec2_sec_group_owner_id
|
11
|
-
@use_sg_id = true
|
12
|
-
end
|
13
|
-
|
14
|
-
def set_use_sg_id(flag)
|
15
|
-
@use_sg_id = flag
|
16
|
-
end
|
17
|
-
|
18
|
-
def get_cf_attributes
|
19
|
-
result = {}
|
20
|
-
result["CIDRIP"] = @cidr unless @cidr.nil?
|
21
|
-
if @use_sg_id
|
22
|
-
result["EC2SecurityGroupId"] = @ec2_sec_group.generate_ref unless @ec2_sec_group.nil?
|
23
|
-
else
|
24
|
-
result["EC2SecurityGroupName"] = @ec2_sec_group.generate_ref unless @ec2_sec_group.nil?
|
25
|
-
end
|
26
|
-
result["EC2SecurityGroupOwnerId"] = @ec2_sec_group_owner_id unless @ec2_sec_group_owner_id.nil?
|
27
|
-
result
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
1
|
+
require 'cf_factory/base/cf_inner'
|
2
|
+
|
3
|
+
module CfFactory
|
4
|
+
class CfRdsSecurityGroupIngress
|
5
|
+
include CfInner
|
6
|
+
|
7
|
+
def initialize(cidr = nil, ec2_sec_group = nil, ec2_sec_group_owner_id = nil)
|
8
|
+
@cidr = cidr
|
9
|
+
@ec2_sec_group = ec2_sec_group
|
10
|
+
@ec2_sec_group_owner_id = ec2_sec_group_owner_id
|
11
|
+
@use_sg_id = true
|
12
|
+
end
|
13
|
+
|
14
|
+
def set_use_sg_id(flag)
|
15
|
+
@use_sg_id = flag
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_cf_attributes
|
19
|
+
result = {}
|
20
|
+
result["CIDRIP"] = @cidr unless @cidr.nil?
|
21
|
+
if @use_sg_id
|
22
|
+
result["EC2SecurityGroupId"] = @ec2_sec_group.generate_ref unless @ec2_sec_group.nil?
|
23
|
+
else
|
24
|
+
result["EC2SecurityGroupName"] = @ec2_sec_group.generate_ref unless @ec2_sec_group.nil?
|
25
|
+
end
|
26
|
+
result["EC2SecurityGroupOwnerId"] = @ec2_sec_group_owner_id unless @ec2_sec_group_owner_id.nil?
|
27
|
+
result
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|