kelbim 0.2.9 → 0.3.0.beta
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 +4 -4
- data/README.md +28 -1
- data/bin/kelbim +2 -1
- data/lib/kelbim/client.rb +5 -26
- data/lib/kelbim/dsl/attributes.rb +3 -4
- data/lib/kelbim/dsl/converter.rb +0 -2
- data/lib/kelbim/dsl/ec2.rb +5 -6
- data/lib/kelbim/dsl/health-check.rb +3 -4
- data/lib/kelbim/dsl/listener.rb +5 -7
- data/lib/kelbim/dsl/listeners.rb +4 -6
- data/lib/kelbim/dsl/load-balancer.rb +6 -10
- data/lib/kelbim/dsl.rb +18 -9
- data/lib/kelbim/exporter.rb +4 -6
- data/lib/kelbim/logger.rb +2 -5
- data/lib/kelbim/rspec-formatter.rb +0 -3
- data/lib/kelbim/template_helper.rb +20 -0
- data/lib/kelbim/tester.rb +0 -6
- data/lib/kelbim/utils.rb +33 -0
- data/lib/kelbim/version.rb +1 -1
- data/lib/kelbim/wrapper/elb-wrapper.rb +0 -3
- data/lib/kelbim/wrapper/listener-collection.rb +0 -5
- data/lib/kelbim/wrapper/listener.rb +8 -10
- data/lib/kelbim/wrapper/load-balancer-collection.rb +0 -5
- data/lib/kelbim/wrapper/load-balancer.rb +20 -15
- data/lib/kelbim/wrapper/policy-collection.rb +0 -6
- data/lib/kelbim/wrapper/policy.rb +10 -6
- data/lib/kelbim.rb +47 -1
- metadata +52 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2a329d50ba93b5acaacef247844fa11372b8492
|
4
|
+
data.tar.gz: 2c1e85f5409c3e6ed565a3cc2fc5609ffdc13f6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a181f841ecef76a507607c5c802af5421ba5a24933a42b0b92d54a72cad17b3856e789ff1a33aa5d80e1341750e9d7fea22fcafd30d1e768f6d0cbabdd386e29
|
7
|
+
data.tar.gz: fce277ac7f3f8be8669ee105a4ccc31fd675b81660fed61048c4f5ac89999a052d452d8abec6aea4ab8183c49fd763023d2b22e870727edc40ae812e68c33bab
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Kelbim is a tool to manage ELB.
|
|
4
4
|
|
5
5
|
It defines the state of ELB using DSL, and updates ELB according to DSL.
|
6
6
|
|
7
|
-
[](https://badge.fury.io/rb/kelbim)
|
8
8
|
[](https://travis-ci.org/winebarrel/kelbim)
|
9
9
|
|
10
10
|
**Notice**
|
@@ -148,6 +148,33 @@ ec2 "vpc-XXXXXXXXX" do
|
|
148
148
|
end
|
149
149
|
```
|
150
150
|
|
151
|
+
## Use template
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
template "listeners" do
|
155
|
+
listeners do
|
156
|
+
listener [:tcp, 80] => [:tcp, context.backend_port]
|
157
|
+
listener [:https, 443] => [:http, context.backend_port] do
|
158
|
+
app_cookie_stickiness "CookieName"=>"20"
|
159
|
+
ssl_negotiation ["Protocol-TLSv1", "Protocol-SSLv3", "AES256-SHA", ...]
|
160
|
+
server_certificate "my-cert"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
ec2 "vpc-XXXXXXXXX" do
|
166
|
+
load_balancer "my-load-balancer", :internal => true do
|
167
|
+
instances(
|
168
|
+
"nyar",
|
169
|
+
"yog"
|
170
|
+
)
|
171
|
+
|
172
|
+
include_template "listeners", backend_port: 80
|
173
|
+
...
|
174
|
+
end
|
175
|
+
end
|
176
|
+
```
|
177
|
+
|
151
178
|
## Test
|
152
179
|
|
153
180
|
```ruby
|
data/bin/kelbim
CHANGED
@@ -36,7 +36,8 @@ ARGV.options do |opt|
|
|
36
36
|
opt.on('-r', '--region REGION') {|v| region = v }
|
37
37
|
opt.on('-a', '--apply') { mode = :apply }
|
38
38
|
opt.on('-f', '--file FILE') {|v| file = v }
|
39
|
-
opt.on('-n', '--elb-
|
39
|
+
opt.on('-n', '--elb-name REGEXP') {|v| options[:elb_name] = Regexp.new(v) }
|
40
|
+
opt.on('', '--exclude-elb-name REGEXP') {|v| options[:exclude_elb_name] = Regexp.new(v) }
|
40
41
|
opt.on('', '--dry-run') { options[:dry_run] = true }
|
41
42
|
opt.on('', '--ec2s VPC_IDS', Array) {|v| options[:ec2s] = v }
|
42
43
|
opt.on('', '--without-deleting-policy') { options[:without_deleting_policy] = true }
|
data/lib/kelbim/client.rb
CHANGED
@@ -1,16 +1,7 @@
|
|
1
|
-
require 'aws-sdk-v1'
|
2
|
-
require 'kelbim/dsl'
|
3
|
-
require 'kelbim/exporter'
|
4
|
-
require 'kelbim/ext/ec2-ext'
|
5
|
-
require 'kelbim/ext/elb-load-balancer-ext'
|
6
|
-
require 'kelbim/policy-types'
|
7
|
-
require 'kelbim/tester'
|
8
|
-
require 'kelbim/wrapper/elb-wrapper'
|
9
|
-
require 'kelbim/logger'
|
10
|
-
|
11
1
|
module Kelbim
|
12
2
|
class Client
|
13
3
|
include Logger::ClientHelper
|
4
|
+
include Kelbim::Utils::Helper
|
14
5
|
|
15
6
|
def initialize(options = {})
|
16
7
|
@options = OpenStruct.new(options)
|
@@ -147,11 +138,7 @@ module Kelbim
|
|
147
138
|
|
148
139
|
lb_list_dsl.each do |key, lb_dsl|
|
149
140
|
name = key[0]
|
150
|
-
|
151
|
-
if @options.elb_names
|
152
|
-
next unless @options.elb_names.include?(name)
|
153
|
-
end
|
154
|
-
|
141
|
+
next unless matched_elb?(name)
|
155
142
|
lb_aws = lb_list_aws[key]
|
156
143
|
|
157
144
|
unless lb_aws
|
@@ -162,11 +149,7 @@ module Kelbim
|
|
162
149
|
|
163
150
|
lb_list_dsl.each do |key, lb_dsl|
|
164
151
|
name = key[0]
|
165
|
-
|
166
|
-
if @options.elb_names
|
167
|
-
next unless @options.elb_names.include?(name)
|
168
|
-
end
|
169
|
-
|
152
|
+
next unless matched_elb?(name)
|
170
153
|
log(:info, "Comparing #{vpc || :classic} > #{name}", :intense_black)
|
171
154
|
|
172
155
|
lb_aws = lb_list_aws.delete(key)
|
@@ -175,11 +158,7 @@ module Kelbim
|
|
175
158
|
|
176
159
|
lb_list_aws.each do |key, lb_aws|
|
177
160
|
name = key[0]
|
178
|
-
|
179
|
-
if @options.elb_names
|
180
|
-
next unless @options.elb_names.include?(name)
|
181
|
-
end
|
182
|
-
|
161
|
+
next unless matched_elb?(name)
|
183
162
|
lb_aws.delete
|
184
163
|
end
|
185
164
|
end
|
@@ -264,7 +243,7 @@ module Kelbim
|
|
264
243
|
end
|
265
244
|
|
266
245
|
if orig_policy_names.sort != new_policies.map {|i| i.name }.sort
|
267
|
-
listener.
|
246
|
+
listener.update_policies(new_policies, old_policies)
|
268
247
|
end
|
269
248
|
|
270
249
|
if not old_policies.empty? and not @options.without_deleting_policy
|
@@ -1,15 +1,14 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/checker'
|
3
|
-
|
4
1
|
module Kelbim
|
5
2
|
class DSL
|
6
3
|
class EC2
|
7
4
|
class LoadBalancer
|
8
5
|
class Attributes
|
9
6
|
include Checker
|
7
|
+
include Kelbim::TemplateHelper
|
10
8
|
|
11
|
-
def initialize(load_balancer, &block)
|
9
|
+
def initialize(context, load_balancer, &block)
|
12
10
|
@error_identifier = "LoadBalancer `#{load_balancer}`"
|
11
|
+
@context = context.dup
|
13
12
|
@result = {}
|
14
13
|
instance_eval(&block)
|
15
14
|
end
|
data/lib/kelbim/dsl/converter.rb
CHANGED
data/lib/kelbim/dsl/ec2.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'set'
|
3
|
-
require 'kelbim/dsl/load-balancer'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class DSL
|
7
3
|
class EC2
|
4
|
+
include Kelbim::TemplateHelper
|
5
|
+
|
8
6
|
attr_reader :result
|
9
7
|
|
10
|
-
def initialize(vpc, load_balancers, &block)
|
8
|
+
def initialize(context, vpc, load_balancers, &block)
|
11
9
|
@error_identifier = "EC2 `#{vpc || :classic}`"
|
10
|
+
@context = context.merge(:vpc => vpc)
|
12
11
|
|
13
12
|
@result = OpenStruct.new({
|
14
13
|
:vpc => vpc,
|
@@ -29,7 +28,7 @@ module Kelbim
|
|
29
28
|
raise "LoadBalancer `#{name}`: Invalid option keys: #{invalid_keys}"
|
30
29
|
end
|
31
30
|
|
32
|
-
@result.load_balancers << LoadBalancer.new(name, @result.vpc, opts[:internal], &block).result
|
31
|
+
@result.load_balancers << LoadBalancer.new(@context, name, @result.vpc, opts[:internal], &block).result
|
33
32
|
@names << name
|
34
33
|
end
|
35
34
|
end # EC2
|
@@ -1,15 +1,14 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/checker'
|
3
|
-
|
4
1
|
module Kelbim
|
5
2
|
class DSL
|
6
3
|
class EC2
|
7
4
|
class LoadBalancer
|
8
5
|
class HealthCheck
|
9
6
|
include Checker
|
7
|
+
include Kelbim::TemplateHelper
|
10
8
|
|
11
|
-
def initialize(load_balancer, &block)
|
9
|
+
def initialize(context, load_balancer, &block)
|
12
10
|
@error_identifier = "LoadBalancer `#{load_balancer}`"
|
11
|
+
@context = context.dup
|
13
12
|
@result = {}
|
14
13
|
instance_eval(&block)
|
15
14
|
end
|
data/lib/kelbim/dsl/listener.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/checker'
|
3
|
-
require 'kelbim/policy-types'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class DSL
|
7
3
|
class EC2
|
@@ -9,9 +5,11 @@ module Kelbim
|
|
9
5
|
class Listeners
|
10
6
|
class Listener
|
11
7
|
include Checker
|
8
|
+
include Kelbim::TemplateHelper
|
12
9
|
|
13
|
-
def initialize(load_balancer,
|
14
|
-
@error_identifier = "LoadBalancer `#{load_balancer}`: #{
|
10
|
+
def initialize(context, load_balancer, protocol_ports, &block)
|
11
|
+
@error_identifier = "LoadBalancer `#{load_balancer}`: #{protocol_ports}"
|
12
|
+
@context = context.merge(:protocol_ports => protocol_ports)
|
15
13
|
|
16
14
|
@result = OpenStruct.new({
|
17
15
|
:policies => []
|
@@ -32,7 +30,7 @@ module Kelbim
|
|
32
30
|
expected_type(value, Hash)
|
33
31
|
|
34
32
|
unless value.kind_of?(Hash)
|
35
|
-
raise "LoadBalancer `#{@load_balancer}`: #{@
|
33
|
+
raise "LoadBalancer `#{@load_balancer}`: #{@protocol_ports}: Invalid policies: #{value}"
|
36
34
|
end
|
37
35
|
|
38
36
|
value = value.map do |policy, name_or_attrs|
|
data/lib/kelbim/dsl/listeners.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/checker'
|
3
|
-
require 'kelbim/dsl/listener'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class DSL
|
7
3
|
class EC2
|
8
4
|
class LoadBalancer
|
9
5
|
class Listeners
|
10
6
|
include Checker
|
7
|
+
include Kelbim::TemplateHelper
|
11
8
|
|
12
|
-
def initialize(load_balancer, &block)
|
9
|
+
def initialize(context, load_balancer, &block)
|
13
10
|
@error_identifier = "LoadBalancer `#{load_balancer}`"
|
11
|
+
@context = context.dup
|
14
12
|
@result = {}
|
15
13
|
instance_eval(&block)
|
16
14
|
end
|
@@ -47,7 +45,7 @@ module Kelbim
|
|
47
45
|
expected_type(port, Integer)
|
48
46
|
end
|
49
47
|
|
50
|
-
@result[protocol_ports] = Listener.new(@load_balancer, protocol_ports, &block).result
|
48
|
+
@result[protocol_ports] = Listener.new(@context, @load_balancer, protocol_ports, &block).result
|
51
49
|
end
|
52
50
|
end # Listeners
|
53
51
|
end # LoadBalancer
|
@@ -1,19 +1,15 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/checker'
|
3
|
-
require 'kelbim/dsl/health-check'
|
4
|
-
require 'kelbim/dsl/attributes'
|
5
|
-
require 'kelbim/dsl/listeners'
|
6
|
-
|
7
1
|
module Kelbim
|
8
2
|
class DSL
|
9
3
|
class EC2
|
10
4
|
class LoadBalancer
|
11
5
|
include Checker
|
6
|
+
include Kelbim::TemplateHelper
|
12
7
|
|
13
|
-
def initialize(name, vpc, internal, &block)
|
8
|
+
def initialize(context, name, vpc, internal, &block)
|
14
9
|
@name = name
|
15
10
|
@vpc = vpc
|
16
11
|
@error_identifier = "LoadBalancer `#{name}`"
|
12
|
+
@context = context.merge(:load_balancer_name => name)
|
17
13
|
|
18
14
|
@result = OpenStruct.new({
|
19
15
|
:name => name,
|
@@ -57,17 +53,17 @@ module Kelbim
|
|
57
53
|
|
58
54
|
def listeners(&block)
|
59
55
|
call_once(:listeners)
|
60
|
-
@result.listeners = Listeners.new(@name, &block).result
|
56
|
+
@result.listeners = Listeners.new(@context, @name, &block).result
|
61
57
|
end
|
62
58
|
|
63
59
|
def health_check(&block)
|
64
60
|
call_once(:health_check)
|
65
|
-
@result.health_check = HealthCheck.new(@name, &block).result
|
61
|
+
@result.health_check = HealthCheck.new(@context, @name, &block).result
|
66
62
|
end
|
67
63
|
|
68
64
|
def attributes(&block)
|
69
65
|
call_once(:attributes)
|
70
|
-
@result.attributes = Attributes.new(@name, &block).result
|
66
|
+
@result.attributes = Attributes.new(@context, @name, &block).result
|
71
67
|
end
|
72
68
|
|
73
69
|
def subnets(*values)
|
data/lib/kelbim/dsl.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'kelbim/dsl/converter'
|
3
|
-
require 'kelbim/dsl/ec2'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class DSL
|
3
|
+
include Kelbim::TemplateHelper
|
4
|
+
|
7
5
|
class << self
|
8
6
|
def define(source, path)
|
9
7
|
self.new(path) do
|
@@ -21,27 +19,38 @@ module Kelbim
|
|
21
19
|
def initialize(path, &block)
|
22
20
|
@path = path
|
23
21
|
@result = OpenStruct.new(:ec2s => {})
|
22
|
+
|
23
|
+
@context = Hashie::Mash.new(
|
24
|
+
:path => path,
|
25
|
+
:templates => {}
|
26
|
+
)
|
27
|
+
|
24
28
|
instance_eval(&block)
|
25
29
|
end
|
26
30
|
|
27
31
|
private
|
32
|
+
|
28
33
|
def require(file)
|
29
|
-
balancerfile = File.expand_path(File.join(File.dirname(@path), file))
|
34
|
+
balancerfile = (file =~ %r|\A/|) ? file : File.expand_path(File.join(File.dirname(@path), file))
|
30
35
|
|
31
36
|
if File.exist?(balancerfile)
|
32
|
-
instance_eval(File.read(balancerfile))
|
37
|
+
instance_eval(File.read(balancerfile), balancerfile)
|
33
38
|
elsif File.exist?(balancerfile + '.rb')
|
34
|
-
instance_eval(File.read(balancerfile + '.rb'))
|
39
|
+
instance_eval(File.read(balancerfile + '.rb'), balancerfile + '.rb')
|
35
40
|
else
|
36
41
|
Kernel.require(file)
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
45
|
+
def template(name, &block)
|
46
|
+
@context.templates[name.to_s] = block
|
47
|
+
end
|
48
|
+
|
40
49
|
def ec2(vpc = nil, &block)
|
41
50
|
if (ec2_result = @result.ec2s[vpc])
|
42
|
-
@result.ec2s[vpc] = EC2.new(vpc, ec2_result.load_balancers, &block).result
|
51
|
+
@result.ec2s[vpc] = EC2.new(@context, vpc, ec2_result.load_balancers, &block).result
|
43
52
|
else
|
44
|
-
@result.ec2s[vpc] = EC2.new(vpc, [], &block).result
|
53
|
+
@result.ec2s[vpc] = EC2.new(@context, vpc, [], &block).result
|
45
54
|
end
|
46
55
|
end
|
47
56
|
end # DSL
|
data/lib/kelbim/exporter.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'kelbim/ext/elb-load-balancer-ext'
|
2
|
-
require 'kelbim/ext/elb-listener-ext'
|
3
|
-
|
4
1
|
module Kelbim
|
5
2
|
class Exporter
|
3
|
+
include Kelbim::Utils::Helper
|
4
|
+
|
6
5
|
class << self
|
7
6
|
def export(elb, options = {})
|
8
7
|
self.new(elb, options).export
|
@@ -19,12 +18,11 @@ module Kelbim
|
|
19
18
|
lbs = @elb.load_balancers
|
20
19
|
|
21
20
|
ec2s = @options[:ec2s]
|
22
|
-
elb_names = @options[:elb_names]
|
23
21
|
|
24
|
-
if ec2s or
|
22
|
+
if ec2s or @options[:elb_name] or @options[:exclude_elb_name]
|
25
23
|
lbs = lbs.select do |lb|
|
26
24
|
(ec2s.nil? or ec2s.include?(lb.vpc_id || 'classic')) &&
|
27
|
-
|
25
|
+
matched_elb?(lb.name)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
data/lib/kelbim/logger.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'logger'
|
2
|
-
require 'singleton'
|
3
|
-
require 'kelbim/ext/string-ext'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class Logger < ::Logger
|
7
3
|
include Singleton
|
@@ -26,7 +22,8 @@ module Kelbim
|
|
26
22
|
message << ": #{log_id}" if log_id
|
27
23
|
message << ' (dry-run)' if @options && @options.dry_run
|
28
24
|
logger = (@options && @options.logger) || Kelbim::Logger.instance
|
29
|
-
|
25
|
+
message = message.send(color) if color
|
26
|
+
logger.send(level, message)
|
30
27
|
end
|
31
28
|
end # ClientHelper
|
32
29
|
end # Logger
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Kelbim
|
2
|
+
module TemplateHelper
|
3
|
+
def include_template(template_name, context = {})
|
4
|
+
tmplt = @context.templates[template_name.to_s]
|
5
|
+
|
6
|
+
unless tmplt
|
7
|
+
raise "Template `#{template_name}` is not defined"
|
8
|
+
end
|
9
|
+
|
10
|
+
context_orig = @context
|
11
|
+
@context = @context.merge(context)
|
12
|
+
instance_eval(&tmplt)
|
13
|
+
@context = context_orig
|
14
|
+
end
|
15
|
+
|
16
|
+
def context
|
17
|
+
@context
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/kelbim/tester.rb
CHANGED
data/lib/kelbim/utils.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Kelbim
|
2
|
+
class Utils
|
3
|
+
module Helper
|
4
|
+
def matched_elb?(name)
|
5
|
+
result = true
|
6
|
+
|
7
|
+
if @options[:exclude_elb_name]
|
8
|
+
result &&= name !~ @options[:exclude_elb_name]
|
9
|
+
end
|
10
|
+
|
11
|
+
if @options[:elb_name]
|
12
|
+
result &&= name =~ @options[:elb_name]
|
13
|
+
end
|
14
|
+
|
15
|
+
result
|
16
|
+
end
|
17
|
+
end # Helper
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def diff(obj1, obj2, options = {})
|
21
|
+
diffy = Diffy::Diff.new(
|
22
|
+
obj1.pretty_inspect,
|
23
|
+
obj2.pretty_inspect,
|
24
|
+
:diff => '-u'
|
25
|
+
)
|
26
|
+
|
27
|
+
out = diffy.to_s(options[:color] ? :color : :text).gsub(/\s+\z/m, '')
|
28
|
+
out.gsub!(/^/, options[:indent]) if options[:indent]
|
29
|
+
out
|
30
|
+
end
|
31
|
+
end # of class methods
|
32
|
+
end
|
33
|
+
end
|
data/lib/kelbim/version.rb
CHANGED
@@ -1,8 +1,3 @@
|
|
1
|
-
require 'forwardable'
|
2
|
-
require 'kelbim/ext/elb-listener-ext'
|
3
|
-
require 'kelbim/wrapper/policy-collection'
|
4
|
-
require 'kelbim/logger'
|
5
|
-
|
6
1
|
module Kelbim
|
7
2
|
class ELBWrapper
|
8
3
|
class LoadBalancerCollection
|
@@ -32,8 +27,9 @@ module Kelbim
|
|
32
27
|
def update(dsl)
|
33
28
|
log(:info, 'Update Listener', :green, log_id)
|
34
29
|
|
35
|
-
compare_server_certificate(dsl) do
|
36
|
-
log(:info, "
|
30
|
+
compare_server_certificate(dsl) do |old_data, new_data|
|
31
|
+
log(:info, " server_certificate:", :green)
|
32
|
+
log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => ' '), false)
|
37
33
|
|
38
34
|
unless @options.dry_run
|
39
35
|
ss = @options.iam.server_certificates[dsl.server_certificate]
|
@@ -48,9 +44,11 @@ module Kelbim
|
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
51
|
-
def
|
47
|
+
def update_policies(policy_list, old_policy_list)
|
48
|
+
old_data = old_policy_list.map {|i| i.name }.sort
|
49
|
+
new_data = policy_list.map {|i| i.name }.sort
|
52
50
|
log(:info, 'Update Listener Policies', :green, log_id)
|
53
|
-
log(:info,
|
51
|
+
log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => ' '), false)
|
54
52
|
|
55
53
|
unless @options.dry_run
|
56
54
|
@options.elb.client.set_load_balancer_policies_of_listener({
|
@@ -99,7 +97,7 @@ module Kelbim
|
|
99
97
|
aws_server_certificate = @listener.server_certificate
|
100
98
|
aws_server_certificate = aws_server_certificate.name if aws_server_certificate
|
101
99
|
same = (aws_server_certificate == dsl.server_certificate)
|
102
|
-
yield if !same && block_given?
|
100
|
+
yield(aws_server_certificate, dsl.server_certificate) if !same && block_given?
|
103
101
|
return same
|
104
102
|
end
|
105
103
|
end # Listener
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'forwardable'
|
2
|
-
require 'kelbim/wrapper/listener-collection'
|
3
|
-
require 'kelbim/logger'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class ELBWrapper
|
7
3
|
class LoadBalancerCollection
|
@@ -69,8 +65,9 @@ module Kelbim
|
|
69
65
|
end
|
70
66
|
end
|
71
67
|
|
72
|
-
compare_health_check(dsl) do
|
73
|
-
log(:info, '
|
68
|
+
compare_health_check(dsl) do |old_data, new_data|
|
69
|
+
log(:info, ' health_check:', :green)
|
70
|
+
log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => ' '), false)
|
74
71
|
|
75
72
|
unless @options.dry_run
|
76
73
|
@load_balancer.configure_health_check(dsl.health_check)
|
@@ -78,8 +75,9 @@ module Kelbim
|
|
78
75
|
end
|
79
76
|
end
|
80
77
|
|
81
|
-
compare_attributes(dsl) do
|
82
|
-
log(:info, '
|
78
|
+
compare_attributes(dsl) do |old_data, new_data|
|
79
|
+
log(:info, ' attributes:', :green)
|
80
|
+
log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => ' '), false)
|
83
81
|
|
84
82
|
unless @options.dry_run
|
85
83
|
@load_balancer.attributes = dsl.attributes
|
@@ -120,9 +118,12 @@ module Kelbim
|
|
120
118
|
end
|
121
119
|
end
|
122
120
|
|
123
|
-
compare_security_groups(dsl) do |dsl_sg_ids|
|
121
|
+
compare_security_groups(dsl) do |aws_sg_ids, dsl_sg_ids|
|
124
122
|
sg_names = @options.security_group_names[self.vpc_id] || {}
|
125
|
-
|
123
|
+
old_data = aws_sg_ids.map {|i| sg_names.fetch(i, i) }.sort
|
124
|
+
new_data = dsl_sg_ids.map {|i| sg_names.fetch(i, i) }.sort
|
125
|
+
log(:info, ' security groups:', :green)
|
126
|
+
log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => ' '), false)
|
126
127
|
|
127
128
|
unless @options.dry_run
|
128
129
|
@options.elb.client.apply_security_groups_to_load_balancer(
|
@@ -183,8 +184,10 @@ module Kelbim
|
|
183
184
|
end
|
184
185
|
|
185
186
|
def compare_health_check(dsl)
|
186
|
-
|
187
|
-
|
187
|
+
old_data = @load_balancer.health_check.sort
|
188
|
+
new_data = dsl.health_check.sort
|
189
|
+
same = (old_data == new_data)
|
190
|
+
yield(old_data, new_data) if !same && block_given?
|
188
191
|
return same
|
189
192
|
end
|
190
193
|
|
@@ -198,8 +201,10 @@ module Kelbim
|
|
198
201
|
lb_attributes[key] = @load_balancer.attributes[key]
|
199
202
|
end
|
200
203
|
|
201
|
-
|
202
|
-
|
204
|
+
old_data = lb_attributes.sort
|
205
|
+
new_data = dsl.attributes.sort
|
206
|
+
same = (old_data == new_data)
|
207
|
+
yield(lb_attributes, dsl.attributes) if !same && block_given?
|
203
208
|
return same
|
204
209
|
end
|
205
210
|
|
@@ -219,7 +224,7 @@ module Kelbim
|
|
219
224
|
}.sort
|
220
225
|
|
221
226
|
same = (aws_sg_ids == dsl_sg_ids)
|
222
|
-
yield(dsl_sg_ids) if !same && block_given?
|
227
|
+
yield(aws_sg_ids, dsl_sg_ids) if !same && block_given?
|
223
228
|
return same
|
224
229
|
end
|
225
230
|
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'forwardable'
|
2
|
-
require 'kelbim/policy-types'
|
3
|
-
require 'kelbim/logger'
|
4
|
-
|
5
1
|
module Kelbim
|
6
2
|
class ELBWrapper
|
7
3
|
class LoadBalancerCollection
|
@@ -38,8 +34,16 @@ module Kelbim
|
|
38
34
|
log(:info, 'Delete Policy', :red, "#{@listener.log_id} > #{self.name}")
|
39
35
|
|
40
36
|
unless @options.dry_run
|
41
|
-
|
42
|
-
|
37
|
+
begin
|
38
|
+
@policy.delete
|
39
|
+
@options.updated = true
|
40
|
+
rescue AWS::ELB::Errors::InvalidConfigurationRequest => e
|
41
|
+
if e.message =~ /You cannot delete policy/
|
42
|
+
# nothing to do
|
43
|
+
else
|
44
|
+
raise e
|
45
|
+
end
|
46
|
+
end
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end # Policy
|
data/lib/kelbim.rb
CHANGED
@@ -1,2 +1,48 @@
|
|
1
|
-
require '
|
1
|
+
require 'forwardable'
|
2
|
+
require 'logger'
|
3
|
+
require 'net/http'
|
4
|
+
require 'ostruct'
|
5
|
+
require 'pp'
|
6
|
+
require 'set'
|
7
|
+
require 'singleton'
|
8
|
+
require 'socket'
|
9
|
+
require 'timeout'
|
10
|
+
|
11
|
+
require 'aws-sdk-v1'
|
12
|
+
require 'diffy'
|
13
|
+
require 'rspec'
|
14
|
+
require 'rspec/core/formatters/progress_formatter'
|
15
|
+
require 'term/ansicolor'
|
16
|
+
require 'uuid'
|
17
|
+
require 'hashie'
|
18
|
+
|
19
|
+
require 'kelbim/ext/string-ext'
|
20
|
+
require 'kelbim/ext/ec2-ext'
|
21
|
+
require 'kelbim/ext/elb-listener-ext'
|
22
|
+
require 'kelbim/ext/elb-load-balancer-ext'
|
23
|
+
|
24
|
+
require 'kelbim/logger'
|
25
|
+
require 'kelbim/utils'
|
26
|
+
require 'kelbim/policy-types'
|
27
|
+
require 'kelbim/dsl/checker'
|
28
|
+
require 'kelbim/template_helper'
|
29
|
+
|
2
30
|
require 'kelbim/client'
|
31
|
+
require 'kelbim/dsl'
|
32
|
+
require 'kelbim/dsl/attributes'
|
33
|
+
require 'kelbim/dsl/converter'
|
34
|
+
require 'kelbim/dsl/ec2'
|
35
|
+
require 'kelbim/dsl/health-check'
|
36
|
+
require 'kelbim/dsl/listener'
|
37
|
+
require 'kelbim/dsl/listeners'
|
38
|
+
require 'kelbim/dsl/load-balancer'
|
39
|
+
require 'kelbim/exporter'
|
40
|
+
require 'kelbim/tester'
|
41
|
+
require 'kelbim/version'
|
42
|
+
require 'kelbim/wrapper/elb-wrapper'
|
43
|
+
require 'kelbim/wrapper/listener'
|
44
|
+
require 'kelbim/wrapper/listener-collection'
|
45
|
+
require 'kelbim/wrapper/load-balancer'
|
46
|
+
require 'kelbim/wrapper/load-balancer-collection'
|
47
|
+
require 'kelbim/wrapper/policy'
|
48
|
+
require 'kelbim/wrapper/policy-collection'
|
metadata
CHANGED
@@ -1,125 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kelbim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-v1
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.59.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.59.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: uuid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.14.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.14.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: json
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: term-ansicolor
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: diffy
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: hashie
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: bundler
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
|
-
- -
|
115
|
+
- - ~>
|
88
116
|
- !ruby/object:Gem::Version
|
89
117
|
version: '1.3'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
|
-
- -
|
122
|
+
- - ~>
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '1.3'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: rake
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
|
-
- -
|
129
|
+
- - '>='
|
102
130
|
- !ruby/object:Gem::Version
|
103
131
|
version: '0'
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
|
-
- -
|
136
|
+
- - '>='
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: rspec-instafail
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
|
-
- -
|
143
|
+
- - '>='
|
116
144
|
- !ruby/object:Gem::Version
|
117
145
|
version: '0'
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
|
-
- -
|
150
|
+
- - '>='
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
description: Kelbim is a tool to manage ELB. It defines the state of ELB using DSL,
|
@@ -152,7 +180,9 @@ files:
|
|
152
180
|
- lib/kelbim/logger.rb
|
153
181
|
- lib/kelbim/policy-types.rb
|
154
182
|
- lib/kelbim/rspec-formatter.rb
|
183
|
+
- lib/kelbim/template_helper.rb
|
155
184
|
- lib/kelbim/tester.rb
|
185
|
+
- lib/kelbim/utils.rb
|
156
186
|
- lib/kelbim/version.rb
|
157
187
|
- lib/kelbim/wrapper/elb-wrapper.rb
|
158
188
|
- lib/kelbim/wrapper/listener-collection.rb
|
@@ -171,17 +201,17 @@ require_paths:
|
|
171
201
|
- lib
|
172
202
|
required_ruby_version: !ruby/object:Gem::Requirement
|
173
203
|
requirements:
|
174
|
-
- -
|
204
|
+
- - '>='
|
175
205
|
- !ruby/object:Gem::Version
|
176
206
|
version: '0'
|
177
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
208
|
requirements:
|
179
|
-
- -
|
209
|
+
- - '>'
|
180
210
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
211
|
+
version: 1.3.1
|
182
212
|
requirements: []
|
183
213
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.4.
|
214
|
+
rubygems_version: 2.4.8
|
185
215
|
signing_key:
|
186
216
|
specification_version: 4
|
187
217
|
summary: Kelbim is a tool to manage ELB.
|