cf_factory 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|