itamae-mitsurin 0.7 → 0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4a13a13168741e95c8e8adc93ab308a34a45892
4
- data.tar.gz: 47410d5b59390fc5aeb0b95801b7ac12979c3da5
3
+ metadata.gz: e97c933691d17f91c2c1c4264349bb262cfbb18b
4
+ data.tar.gz: 029195b19075695902c96f3542d87fa381fb6db1
5
5
  SHA512:
6
- metadata.gz: 1241689feb0f512bb31deea4e8263d94b485cff966d382045f2d5e731a15af1780e9396638e8c042fb9ca2778287d1eca5c9d3d4a7bfe6032d9bb24b6304ae0b
7
- data.tar.gz: 29684144ddebcab7d461745a26e286a5d7fa97807008d7a7cd31864939f8c5ed500f4fab4ab938c8362ce77a2f381cad830e2645f49fb25d424dd117eb8d3c57
6
+ metadata.gz: 6d987dd2f60c4d83910b537c1a4494814ed8178ccdc90b9c60cae176988aef7ad28cb0ed30cc4df06c130975b5bea502e2edcb827570eee91171a85c5ebde439
7
+ data.tar.gz: d6aa204d123181354c6cf027c10dee0e94c29d1e6d90537326891e07345f9484ecfe3e2d0e022e38e713f5c9cd9cea757f5f08db2187ee46a70a77132254cc95
data/README.md CHANGED
@@ -23,10 +23,9 @@ $ manaita init
23
23
  ```ruby
24
24
  # recipe
25
25
 
26
- Aws.config[:region] = 'ap-northeast-1'
27
-
28
26
  aws_ebs_volume "ebs_name" do
29
27
  action [:create, :attach]
28
+ region "ap-northeast-1"
30
29
  availability_zone "ap-northeast-1a"
31
30
  device '/dev/xvdb'
32
31
  volume_type 'standard'
@@ -17,6 +17,8 @@ require 'itamae-mitsurin/resource/user'
17
17
  require 'itamae-mitsurin/resource/group'
18
18
  require 'itamae-mitsurin/resource/gem_package'
19
19
  require 'itamae-mitsurin/resource/aws_ebs_volume'
20
+ require 'itamae-mitsurin/resource/aws_route53_rrset'
21
+ require 'itamae-mitsurin/resource/aws_route53_rrset_alias'
20
22
 
21
23
  module ItamaeMitsurin
22
24
  module Resource
@@ -2,83 +2,85 @@ require 'itamae-mitsurin'
2
2
  require 'itamae-mitsurin/mitsurin'
3
3
 
4
4
  module ItamaeMitsurin
5
- module Resource
6
- class AwsEbsVolume < Base
7
- define_attribute :action, default: :create
8
- define_attribute :name, type: String, default_name: true
9
- define_attribute :availability_zone, type: String
10
- define_attribute :device, type: String
11
- define_attribute :instance_id, type: String
12
- define_attribute :volume_type, type: String
13
- define_attribute :size, type: Integer
5
+ module Resource
6
+ class AwsEbsVolume < Base
14
7
 
15
- def action_create(options)
16
- ec2 = ::Aws::EC2::Client.new
17
- volumes = ec2.describe_volumes(
18
- {
19
- filters: [
20
- {
21
- name: 'tag:Name',
22
- values: [ attributes.name ],
23
- },
24
- ],
25
- }
26
- ).volumes
27
-
28
- if volumes.empty?
29
- @volume = ec2.create_volume(
30
- size: attributes[:size], # attributes.size returns the size of attributes hash
31
- availability_zone: attributes.availability_zone,
32
- volume_type: attributes.volume_type,
33
- )
8
+ define_attribute :region, type: String
9
+ define_attribute :action, default: :create
10
+ define_attribute :name, type: String, default_name: true
11
+ define_attribute :availability_zone, type: String
12
+ define_attribute :device, type: String
13
+ define_attribute :instance_id, type: String
14
+ define_attribute :volume_type, type: String
15
+ define_attribute :size, type: Integer
34
16
 
35
- ec2.create_tags(
17
+ def action_create(options)
18
+ Aws.config[:region] = attributes.region
19
+ ec2 = ::Aws::EC2::Client.new
20
+ volumes = ec2.describe_volumes(
21
+ {
22
+ filters: [
36
23
  {
37
- resources: [ @volume.volume_id ],
38
- tags: [
39
- {
40
- key: 'Name',
41
- value: attributes.name,
42
- },
43
- ],
44
- }
45
- )
24
+ name: 'tag:Name',
25
+ values: [ attributes.name ],
26
+ },
27
+ ],
28
+ }
29
+ ).volumes
46
30
 
47
- updated!
48
- sleep(3)
49
- else
50
- @volume = volumes[0]
51
- end
31
+ if volumes.empty?
32
+ @volume = ec2.create_volume(
33
+ size: attributes[:size], # attributes.size returns the size of attributes hash
34
+ availability_zone: attributes.availability_zone,
35
+ volume_type: attributes.volume_type,
36
+ )
52
37
 
53
- end
54
-
55
- def action_attach(options)
56
- ec2 = ::Aws::EC2::Client.new
57
- volumes = ec2.describe_volumes(
38
+ ec2.create_tags(
58
39
  {
59
- filters: [
40
+ resources: [ @volume.volume_id ],
41
+ tags: [
60
42
  {
61
- name: 'tag:Name',
62
- values: [ attributes.name ],
43
+ key: 'Name',
44
+ value: attributes.name,
63
45
  },
64
46
  ],
65
47
  }
66
- ).volumes
48
+ )
49
+
50
+ updated!
51
+ sleep(3)
52
+ else
53
+ @volume = volumes[0]
54
+ end
55
+ end
67
56
 
68
- unless volumes.empty?
69
- @volume = ec2.attach_volume({
70
- volume_id: @volume.volume_id,
71
- instance_id: attributes.instance_id,
72
- device: attributes.device
73
- })
57
+ def action_attach(options)
58
+ Aws.config[:region] = attributes.region
59
+ ec2 = ::Aws::EC2::Client.new
60
+ volumes = ec2.describe_volumes(
61
+ {
62
+ filters: [
63
+ {
64
+ name: 'tag:Name',
65
+ values: [ attributes.name ],
66
+ },
67
+ ],
68
+ }
69
+ ).volumes
74
70
 
75
- updated!
76
- else
77
- @volume = volumes[0]
78
- end
71
+ unless volumes.empty?
72
+ @volume = ec2.attach_volume({
73
+ volume_id: @volume.volume_id,
74
+ instance_id: attributes.instance_id,
75
+ device: attributes.device
76
+ })
79
77
 
78
+ updated!
79
+ else
80
+ @volume = volumes[0]
80
81
  end
81
82
  end
82
83
  end
84
+ end
83
85
  end
84
86
 
@@ -0,0 +1,96 @@
1
+ require 'itamae-mitsurin'
2
+ require 'itamae-mitsurin/mitsurin'
3
+
4
+ module ItamaeMitsurin
5
+ module Resource
6
+ class AwsRoute53Rrset < Base
7
+
8
+ define_attribute :region, type: String
9
+ define_attribute :action, default: :create
10
+ define_attribute :name, type: String, default_name: true
11
+ define_attribute :hosted_zone_id, type: String, required: true
12
+ define_attribute :type, type: String, required: true
13
+ define_attribute :weight, type: Integer
14
+ define_attribute :failover, type: String
15
+ define_attribute :ttl, type: Integer
16
+ define_attribute :value, type: String, required: true
17
+ define_attribute :health_check_id, type: String
18
+ define_attribute :traffic_policy_instance_id, type: String
19
+
20
+ def pre_action
21
+ Aws.config[:region] = attributes.region
22
+ route53 = ::Aws::Route53::Client.new
23
+
24
+ @record = route53.list_resource_record_sets({
25
+ hosted_zone_id: attributes.hosted_zone_id,
26
+ start_record_name: attributes.name,
27
+ start_record_type: attributes.type,
28
+ max_items: 1,
29
+ })
30
+
31
+ if attributes.failover == "PRIMARY"
32
+ set_identifier = "PRIMARY-" + attributes.name.split(".")[0]
33
+ elsif attributes.failover == "SECONDARY"
34
+ set_identifier = "SECONDARY-" + attributes.name.split(".")[0]
35
+ else
36
+ set_identifier = nil
37
+ end
38
+
39
+ @rrset_hash = {
40
+ hosted_zone_id: attributes.hosted_zone_id,
41
+ change_batch: {
42
+ comment: nil,
43
+ changes: [
44
+ {
45
+ action: attributes.action.to_s.upcase,
46
+ resource_record_set: {
47
+ name: attributes.name,
48
+ type: attributes.type,
49
+ set_identifier: set_identifier,
50
+ weight: attributes.weight,
51
+ failover: attributes.failover,
52
+ ttl: attributes.ttl,
53
+ resource_records: [
54
+ {
55
+ value: attributes.value,
56
+ },
57
+ ],
58
+ health_check_id: attributes.health_check_id,
59
+ traffic_policy_instance_id: attributes.traffic_policy_instance_id,
60
+ },
61
+ },
62
+ ],
63
+ },
64
+ }
65
+ end
66
+
67
+ def action_create(options)
68
+ Aws.config[:region] = attributes.region
69
+ route53 = ::Aws::Route53::Client.new
70
+
71
+ unless @record[0][0][0] == attributes.name
72
+ resp = route53.change_resource_record_sets(@rrset_hash)
73
+ updated!
74
+ end
75
+ end
76
+
77
+ def action_upsert(options)
78
+ Aws.config[:region] = attributes.region
79
+ route53 = ::Aws::Route53::Client.new
80
+
81
+ resp = route53.change_resource_record_sets(@rrset_hash)
82
+ updated!
83
+ end
84
+
85
+ def action_delete(options)
86
+ Aws.config[:region] = attributes.region
87
+ route53 = ::Aws::Route53::Client.new
88
+
89
+ if @record[0][0][0] == attributes.name
90
+ resp = route53.change_resource_record_sets(@rrset_hash)
91
+ updated!
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,97 @@
1
+ require 'itamae-mitsurin'
2
+ require 'itamae-mitsurin/mitsurin'
3
+
4
+ module ItamaeMitsurin
5
+ module Resource
6
+ class AwsRoute53RrsetAlias < Base
7
+
8
+ define_attribute :region, type: String
9
+ define_attribute :action, default: :create
10
+ define_attribute :name, type: String, default_name: true
11
+ define_attribute :type, type: String, required: true
12
+ define_attribute :hosted_zone_id, type: String, required: true
13
+ define_attribute :weight, type: Integer
14
+ define_attribute :failover, type: String
15
+ define_attribute :alias_target, type: [TrueClass, FalseClass], default: false, required: true
16
+ define_attribute :alias_hosted_zone_id, type: String, required: true
17
+ define_attribute :dns_name, type: String, required: true
18
+ define_attribute :evaluate_target_health, type: [TrueClass, FalseClass], default: false
19
+ define_attribute :health_check_id, type: String
20
+ define_attribute :traffic_policy_instance_id, type: String
21
+
22
+ def pre_action
23
+ Aws.config[:region] = attributes.region
24
+ route53 = ::Aws::Route53::Client.new
25
+
26
+ @record = route53.list_resource_record_sets({
27
+ hosted_zone_id: attributes.hosted_zone_id,
28
+ start_record_name: attributes.name,
29
+ start_record_type: attributes.type,
30
+ max_items: 1,
31
+ })
32
+
33
+ if attributes.failover == "PRIMARY"
34
+ set_identifier = "PRIMARY-" + attributes.name.split(".")[0]
35
+ elsif attributes.failover == "SECONDARY"
36
+ set_identifier = "SECONDARY-" + attributes.name.split(".")[0]
37
+ else
38
+ set_identifier = nil
39
+ end
40
+
41
+ @rrset_hash = {
42
+ hosted_zone_id: attributes.hosted_zone_id,
43
+ change_batch: {
44
+ comment: nil,
45
+ changes: [
46
+ {
47
+ action: attributes.action.to_s.upcase,
48
+ resource_record_set: {
49
+ name: attributes.name,
50
+ type: attributes.type,
51
+ set_identifier: set_identifier,
52
+ weight: attributes.weight,
53
+ failover: attributes.failover,
54
+ alias_target: {
55
+ hosted_zone_id: attributes.alias_hosted_zone_id,
56
+ dns_name: attributes.dns_name,
57
+ evaluate_target_health: attributes.evaluate_target_health,
58
+ },
59
+ health_check_id: attributes.health_check_id,
60
+ traffic_policy_instance_id: attributes.traffic_policy_instance_id,
61
+ },
62
+ },
63
+ ],
64
+ },
65
+ }
66
+ end
67
+
68
+ def action_create(options)
69
+ Aws.config[:region] = attributes.region
70
+ route53 = ::Aws::Route53::Client.new
71
+
72
+ unless @record[0][0][0] == attributes.name
73
+ resp = route53.change_resource_record_sets(@rrset_hash)
74
+ updated!
75
+ end
76
+ end
77
+
78
+ def action_upsert(options)
79
+ Aws.config[:region] = attributes.region
80
+ route53 = ::Aws::Route53::Client.new
81
+
82
+ resp = route53.change_resource_record_sets(@rrset_hash)
83
+ updated!
84
+ end
85
+
86
+ def action_delete(options)
87
+ Aws.config[:region] = attributes.region
88
+ route53 = ::Aws::Route53::Client.new
89
+
90
+ if @record[0][0][0] == attributes.name
91
+ resp = route53.change_resource_record_sets(@rrset_hash)
92
+ updated!
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -1 +1 @@
1
- 0.7
1
+ 0.8
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae-mitsurin
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.7'
4
+ version: '0.8'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akihiro Kamiyama
@@ -280,6 +280,8 @@ files:
280
280
  - lib/itamae-mitsurin/recipe_children.rb
281
281
  - lib/itamae-mitsurin/resource.rb
282
282
  - lib/itamae-mitsurin/resource/aws_ebs_volume.rb
283
+ - lib/itamae-mitsurin/resource/aws_route53_rrset.rb
284
+ - lib/itamae-mitsurin/resource/aws_route53_rrset_alias.rb
283
285
  - lib/itamae-mitsurin/resource/base.rb
284
286
  - lib/itamae-mitsurin/resource/directory.rb
285
287
  - lib/itamae-mitsurin/resource/execute.rb