terraforming 0.0.1 → 0.0.2

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.
@@ -1,56 +1,58 @@
1
- module Terraforming::Resource
2
- class ELB
3
- include Terraforming::Util
1
+ module Terraforming
2
+ module Resource
3
+ class ELB
4
+ include Terraforming::Util
4
5
 
5
- def self.tf(client = Aws::ElasticLoadBalancing::Client.new)
6
- self.new(client).tf
7
- end
6
+ def self.tf(client = Aws::ElasticLoadBalancing::Client.new)
7
+ self.new(client).tf
8
+ end
8
9
 
9
- def self.tfstate(client = Aws::ElasticLoadBalancing::Client.new)
10
- self.new(client).tfstate
11
- end
10
+ def self.tfstate(client = Aws::ElasticLoadBalancing::Client.new)
11
+ self.new(client).tfstate
12
+ end
12
13
 
13
- def initialize(client)
14
- @client = client
15
- end
14
+ def initialize(client)
15
+ @client = client
16
+ end
16
17
 
17
- def tf
18
- apply_template(@client, "tf/elb")
19
- end
18
+ def tf
19
+ apply_template(@client, "tf/elb")
20
+ end
20
21
 
21
- def tfstate
22
- resources = load_balancers.inject({}) do |result, load_balancer|
23
- attributes = {
24
- "availability_zones.#" => load_balancer.availability_zones.length.to_s,
25
- "dns_name" => load_balancer.dns_name,
26
- "health_check.#" => "1",
27
- "id" => load_balancer.load_balancer_name,
28
- "instances.#" => load_balancer.instances.length.to_s,
29
- "listener.#" => load_balancer.listener_descriptions.length.to_s,
30
- "name" => load_balancer.load_balancer_name,
31
- "security_groups.#" => load_balancer.security_groups.length.to_s,
32
- "subnets.#" => load_balancer.subnets.length.to_s,
33
- }
34
- result["aws_elb.#{module_name_of(load_balancer)}"] = {
35
- "type" => "aws_elb",
36
- "primary" => {
22
+ def tfstate
23
+ resources = load_balancers.inject({}) do |result, load_balancer|
24
+ attributes = {
25
+ "availability_zones.#" => load_balancer.availability_zones.length.to_s,
26
+ "dns_name" => load_balancer.dns_name,
27
+ "health_check.#" => "1",
37
28
  "id" => load_balancer.load_balancer_name,
38
- "attributes" => attributes
29
+ "instances.#" => load_balancer.instances.length.to_s,
30
+ "listener.#" => load_balancer.listener_descriptions.length.to_s,
31
+ "name" => load_balancer.load_balancer_name,
32
+ "security_groups.#" => load_balancer.security_groups.length.to_s,
33
+ "subnets.#" => load_balancer.subnets.length.to_s,
34
+ }
35
+ result["aws_elb.#{module_name_of(load_balancer)}"] = {
36
+ "type" => "aws_elb",
37
+ "primary" => {
38
+ "id" => load_balancer.load_balancer_name,
39
+ "attributes" => attributes
40
+ }
39
41
  }
40
- }
41
42
 
42
- result
43
- end
43
+ result
44
+ end
44
45
 
45
- generate_tfstate(resources)
46
- end
46
+ generate_tfstate(resources)
47
+ end
47
48
 
48
- def load_balancers
49
- @client.describe_load_balancers.load_balancer_descriptions
50
- end
49
+ def load_balancers
50
+ @client.describe_load_balancers.load_balancer_descriptions
51
+ end
51
52
 
52
- def module_name_of(load_balancer)
53
- normalize_module_name(load_balancer.load_balancer_name)
53
+ def module_name_of(load_balancer)
54
+ normalize_module_name(load_balancer.load_balancer_name)
55
+ end
54
56
  end
55
57
  end
56
58
  end
@@ -0,0 +1,72 @@
1
+ module Terraforming
2
+ module Resource
3
+ class NetworkACL
4
+ include Terraforming::Util
5
+
6
+ def self.tf(client = Aws::EC2::Client.new)
7
+ self.new(client).tf
8
+ end
9
+
10
+ def self.tfstate(client = Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
+ end
13
+
14
+ def initialize(client)
15
+ @client = client
16
+ end
17
+
18
+ def tf
19
+ apply_template(@client, "tf/network_acl")
20
+ end
21
+
22
+ def tfstate
23
+ resources = network_acls.inject({}) do |result, network_acl|
24
+ attributes = {
25
+ "egress.#" => egresses_of(network_acl).length.to_s,
26
+ "id" => network_acl.network_acl_id,
27
+ "ingress.#" => ingresses_of(network_acl).length.to_s,
28
+ "tags.#" => network_acl.tags.length.to_s,
29
+ "vpc_id" => network_acl.vpc_id,
30
+ }
31
+ result["aws_network_acl.#{module_name_of(network_acl)}"] = {
32
+ "type" => "aws_network_acl",
33
+ "primary" => {
34
+ "id" => network_acl.network_acl_id,
35
+ "attributes" => attributes
36
+ }
37
+ }
38
+
39
+ result
40
+ end
41
+
42
+ generate_tfstate(resources)
43
+ end
44
+
45
+ private
46
+
47
+ def egresses_of(network_acl)
48
+ network_acl.entries.select { |entry| entry.egress }
49
+ end
50
+
51
+ def from_port_of(entry)
52
+ entry.port_range ? entry.port_range.from : 0
53
+ end
54
+
55
+ def ingresses_of(network_acl)
56
+ network_acl.entries.select { |entry| !entry.egress }
57
+ end
58
+
59
+ def module_name_of(network_acl)
60
+ normalize_module_name(name_from_tag(network_acl, network_acl.network_acl_id))
61
+ end
62
+
63
+ def network_acls
64
+ @client.describe_network_acls.network_acls
65
+ end
66
+
67
+ def to_port_of(entry)
68
+ entry.port_range ? entry.port_range.to : 65535
69
+ end
70
+ end
71
+ end
72
+ end
@@ -1,74 +1,76 @@
1
- module Terraforming::Resource
2
- class RDS
3
- include Terraforming::Util
1
+ module Terraforming
2
+ module Resource
3
+ class RDS
4
+ include Terraforming::Util
4
5
 
5
- def self.tf(client = Aws::RDS::Client.new)
6
- self.new(client).tf
7
- end
6
+ def self.tf(client = Aws::RDS::Client.new)
7
+ self.new(client).tf
8
+ end
8
9
 
9
- def self.tfstate(client = Aws::RDS::Client.new)
10
- self.new(client).tfstate
11
- end
10
+ def self.tfstate(client = Aws::RDS::Client.new)
11
+ self.new(client).tfstate
12
+ end
12
13
 
13
- def initialize(client)
14
- @client = client
15
- end
14
+ def initialize(client)
15
+ @client = client
16
+ end
16
17
 
17
- def tf
18
- apply_template(@client, "tf/rds")
19
- end
18
+ def tf
19
+ apply_template(@client, "tf/rds")
20
+ end
20
21
 
21
- def tfstate
22
- resources = db_instances.inject({}) do |result, instance|
23
- attributes = {
24
- "address" => instance.endpoint.address,
25
- "allocated_storage" => instance.allocated_storage.to_s,
26
- "availability_zone" => instance.availability_zone,
27
- "backup_retention_period" => instance.backup_retention_period.to_s,
28
- "backup_window" => instance.preferred_backup_window,
29
- "db_subnet_group_name" => instance.db_subnet_group ? instance.db_subnet_group.db_subnet_group_name : "",
30
- "endpoint" => instance.endpoint.address,
31
- "engine" => instance.engine,
32
- "engine_version" => instance.engine_version,
33
- "final_snapshot_identifier" => "#{instance.db_instance_identifier}-final",
34
- "id" => instance.db_instance_identifier,
35
- "identifier" => instance.db_instance_identifier,
36
- "instance_class" => instance.db_instance_class,
37
- "maintenance_window" => instance.preferred_maintenance_window,
38
- "multi_az" => instance.multi_az.to_s,
39
- "name" => instance.db_name,
40
- "parameter_group_name" => instance.db_parameter_groups[0].db_parameter_group_name,
41
- "password" => "xxxxxxxx",
42
- "port" => instance.endpoint.port.to_s,
43
- "publicly_accessible" => instance.publicly_accessible.to_s,
44
- "security_group_names.#" => instance.db_security_groups.length.to_s,
45
- "status" => instance.db_instance_status,
46
- "storage_type" => instance.storage_type,
47
- "username" => instance.master_username,
48
- "vpc_security_group_ids.#" => instance.vpc_security_groups.length.to_s,
49
- }
50
- result["aws_db_instance.#{module_name_of(instance)}"] = {
51
- "type" => "aws_db_instance",
52
- "primary" => {
22
+ def tfstate
23
+ resources = db_instances.inject({}) do |result, instance|
24
+ attributes = {
25
+ "address" => instance.endpoint.address,
26
+ "allocated_storage" => instance.allocated_storage.to_s,
27
+ "availability_zone" => instance.availability_zone,
28
+ "backup_retention_period" => instance.backup_retention_period.to_s,
29
+ "backup_window" => instance.preferred_backup_window,
30
+ "db_subnet_group_name" => instance.db_subnet_group ? instance.db_subnet_group.db_subnet_group_name : "",
31
+ "endpoint" => instance.endpoint.address,
32
+ "engine" => instance.engine,
33
+ "engine_version" => instance.engine_version,
34
+ "final_snapshot_identifier" => "#{instance.db_instance_identifier}-final",
53
35
  "id" => instance.db_instance_identifier,
54
- "attributes" => attributes
36
+ "identifier" => instance.db_instance_identifier,
37
+ "instance_class" => instance.db_instance_class,
38
+ "maintenance_window" => instance.preferred_maintenance_window,
39
+ "multi_az" => instance.multi_az.to_s,
40
+ "name" => instance.db_name,
41
+ "parameter_group_name" => instance.db_parameter_groups[0].db_parameter_group_name,
42
+ "password" => "xxxxxxxx",
43
+ "port" => instance.endpoint.port.to_s,
44
+ "publicly_accessible" => instance.publicly_accessible.to_s,
45
+ "security_group_names.#" => instance.db_security_groups.length.to_s,
46
+ "status" => instance.db_instance_status,
47
+ "storage_type" => instance.storage_type,
48
+ "username" => instance.master_username,
49
+ "vpc_security_group_ids.#" => instance.vpc_security_groups.length.to_s,
50
+ }
51
+ result["aws_db_instance.#{module_name_of(instance)}"] = {
52
+ "type" => "aws_db_instance",
53
+ "primary" => {
54
+ "id" => instance.db_instance_identifier,
55
+ "attributes" => attributes
56
+ }
55
57
  }
56
- }
57
58
 
58
- result
59
- end
59
+ result
60
+ end
60
61
 
61
- generate_tfstate(resources)
62
- end
62
+ generate_tfstate(resources)
63
+ end
63
64
 
64
- private
65
+ private
65
66
 
66
- def db_instances
67
- @client.describe_db_instances.db_instances
68
- end
67
+ def db_instances
68
+ @client.describe_db_instances.db_instances
69
+ end
69
70
 
70
- def module_name_of(instance)
71
- normalize_module_name(instance.db_instance_identifier)
71
+ def module_name_of(instance)
72
+ normalize_module_name(instance.db_instance_identifier)
73
+ end
72
74
  end
73
75
  end
74
76
  end
@@ -1,51 +1,53 @@
1
- module Terraforming::Resource
2
- class S3
3
- include Terraforming::Util
1
+ module Terraforming
2
+ module Resource
3
+ class S3
4
+ include Terraforming::Util
4
5
 
5
- def self.tf(client = Aws::S3::Client.new)
6
- self.new(client).tf
7
- end
6
+ def self.tf(client = Aws::S3::Client.new)
7
+ self.new(client).tf
8
+ end
8
9
 
9
- def self.tfstate(client = Aws::S3::Client.new)
10
- self.new(client).tfstate
11
- end
10
+ def self.tfstate(client = Aws::S3::Client.new)
11
+ self.new(client).tfstate
12
+ end
12
13
 
13
- def initialize(client)
14
- @client = client
15
- end
14
+ def initialize(client)
15
+ @client = client
16
+ end
16
17
 
17
- def tf
18
- apply_template(@client, "tf/s3")
19
- end
18
+ def tf
19
+ apply_template(@client, "tf/s3")
20
+ end
20
21
 
21
- def tfstate
22
- resources = buckets.inject({}) do |result, bucket|
23
- result["aws_s3_bucket.#{module_name_of(bucket)}"] = {
24
- "type" => "aws_s3_bucket",
25
- "primary" => {
26
- "id" => bucket.name,
27
- "attributes" => {
28
- "acl" => "private",
29
- "bucket" => bucket.name,
30
- "id" => bucket.name
22
+ def tfstate
23
+ resources = buckets.inject({}) do |result, bucket|
24
+ result["aws_s3_bucket.#{module_name_of(bucket)}"] = {
25
+ "type" => "aws_s3_bucket",
26
+ "primary" => {
27
+ "id" => bucket.name,
28
+ "attributes" => {
29
+ "acl" => "private",
30
+ "bucket" => bucket.name,
31
+ "id" => bucket.name
32
+ }
31
33
  }
32
34
  }
33
- }
34
35
 
35
- result
36
- end
36
+ result
37
+ end
37
38
 
38
- generate_tfstate(resources)
39
- end
39
+ generate_tfstate(resources)
40
+ end
40
41
 
41
- private
42
+ private
42
43
 
43
- def buckets
44
- @client.list_buckets.buckets
45
- end
44
+ def buckets
45
+ @client.list_buckets.buckets
46
+ end
46
47
 
47
- def module_name_of(bucket)
48
- normalize_module_name(bucket.name)
48
+ def module_name_of(bucket)
49
+ normalize_module_name(bucket.name)
50
+ end
49
51
  end
50
52
  end
51
53
  end
@@ -1,56 +1,58 @@
1
- module Terraforming::Resource
2
- class SecurityGroup
3
- include Terraforming::Util
1
+ module Terraforming
2
+ module Resource
3
+ class SecurityGroup
4
+ include Terraforming::Util
4
5
 
5
- def self.tf(client = Aws::EC2::Client.new)
6
- self.new(client).tf
7
- end
6
+ def self.tf(client = Aws::EC2::Client.new)
7
+ self.new(client).tf
8
+ end
8
9
 
9
- def self.tfstate(client = Aws::EC2::Client.new)
10
- self.new(client).tfstate
11
- end
10
+ def self.tfstate(client = Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
+ end
12
13
 
13
- def initialize(client)
14
- @client = client
15
- end
14
+ def initialize(client)
15
+ @client = client
16
+ end
16
17
 
17
- def tf
18
- apply_template(@client, "tf/security_group")
19
- end
18
+ def tf
19
+ apply_template(@client, "tf/security_group")
20
+ end
20
21
 
21
- def tfstate
22
- resources = security_groups.inject({}) do |result, security_group|
23
- attributes = {
24
- "description" => security_group.description,
25
- "egress.#" => security_group.ip_permissions_egress.length.to_s,
26
- "id" => security_group.group_id,
27
- "ingress.#" => security_group.ip_permissions.length.to_s,
28
- "name" => security_group.group_name,
29
- "owner_id" => security_group.owner_id,
30
- "vpc_id" => security_group.vpc_id || "",
31
- }
32
- result["aws_security_group.#{module_name_of(security_group)}"] = {
33
- "type" => "aws_security_group",
34
- "primary" => {
22
+ def tfstate
23
+ resources = security_groups.inject({}) do |result, security_group|
24
+ attributes = {
25
+ "description" => security_group.description,
26
+ "egress.#" => security_group.ip_permissions_egress.length.to_s,
35
27
  "id" => security_group.group_id,
36
- "attributes" => attributes
28
+ "ingress.#" => security_group.ip_permissions.length.to_s,
29
+ "name" => security_group.group_name,
30
+ "owner_id" => security_group.owner_id,
31
+ "vpc_id" => security_group.vpc_id || "",
32
+ }
33
+ result["aws_security_group.#{module_name_of(security_group)}"] = {
34
+ "type" => "aws_security_group",
35
+ "primary" => {
36
+ "id" => security_group.group_id,
37
+ "attributes" => attributes
38
+ }
37
39
  }
38
- }
39
40
 
40
- result
41
- end
41
+ result
42
+ end
42
43
 
43
- generate_tfstate(resources)
44
- end
44
+ generate_tfstate(resources)
45
+ end
45
46
 
46
- private
47
+ private
47
48
 
48
- def module_name_of(security_group)
49
- normalize_module_name(security_group.group_name)
50
- end
49
+ def module_name_of(security_group)
50
+ normalize_module_name(security_group.group_name)
51
+ end
51
52
 
52
- def security_groups
53
- @client.describe_security_groups.security_groups
53
+ def security_groups
54
+ @client.describe_security_groups.security_groups
55
+ end
54
56
  end
55
57
  end
56
58
  end