piculet 0.1.6 → 0.1.7
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 +5 -13
- data/README.md +1 -3
- data/bin/piculet +5 -3
- data/lib/piculet/client.rb +30 -2
- data/lib/piculet/exporter.rb +14 -4
- data/lib/piculet/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZTgzYWIxZjBhODE1ZjBmNzZkZTg2YWM5ODBjZjYxOGQ5MmRjYzc4NA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7be7c72108966fd702024bbf57244efd91de9a7
|
4
|
+
data.tar.gz: 885ae36b3897675d9255e56c9efcd79756c10963
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NWNjMGRmNDM0ZTZmM2I3NjBhYjFjNjI5NWI2MjkyYTcwMWVlN2RmZWY1NjJk
|
11
|
-
OWY3ZTFjNDBlZTFlNjM2ODczODNhYzExNTliMzc4Yjc0NDg2MGQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjdiNmM0ZjJmMjM3YWZjN2I1NmZhZjU5YzI5MDA4NzhjYzc5NmExY2QzZGU2
|
14
|
-
OTFjOWM3MGUyMjE1ZGFkNGExNTkwNGY1MGE0MzMwNWU4YWJiM2RjYjI5OTc5
|
15
|
-
MzFlY2Y2ODIxMWFiYWQxMTkxMWNkZWYyYjRkODg2NzRjZTdlZjQ=
|
6
|
+
metadata.gz: ac5cf7f08e29eb902cdc5b60b3b0c104f5d44f84131a20d5132c2836f7d8db3621f22530c8faac1814fef25212b36f0ec133b9cedc4a3f2b44243a4fa6e48bed
|
7
|
+
data.tar.gz: 465276c6d0464a38ee8cf6e51e57584f52b25543596f7040dc1137729cb339fab54d7e323a147419aa4841954112e3c2810523360325eb0379e38ce5f9fd7f0d
|
data/README.md
CHANGED
@@ -4,6 +4,7 @@ Piculet is a tool to manage EC2 Security Group.
|
|
4
4
|
|
5
5
|
It defines the state of EC2 Security Group using DSL, and updates EC2 Security Group according to DSL.
|
6
6
|
|
7
|
+
[](http://badge.fury.io/rb/piculet)
|
7
8
|
[](https://drone.io/bitbucket.org/winebarrel/piculet/latest)
|
8
9
|
|
9
10
|
## Installation
|
@@ -124,6 +125,3 @@ ec2 "vpc-XXXXXXXX" do
|
|
124
125
|
end
|
125
126
|
end
|
126
127
|
```
|
127
|
-
|
128
|
-
## Link
|
129
|
-
* [RubyGems.org site](http://rubygems.org/gems/piculet)
|
data/bin/piculet
CHANGED
@@ -26,6 +26,8 @@ ARGV.options do |opt|
|
|
26
26
|
opt.on('-r', '--region REGION') {|v| region = v }
|
27
27
|
opt.on('-a', '--apply') {|v| mode = :apply }
|
28
28
|
opt.on('-f', '--file FILE') {|v| file = v }
|
29
|
+
opt.on('-n', '--names SG_LIST', Array) {|v| options[:sg_names] = v }
|
30
|
+
opt.on('', '--ec2s VPC_IDS', Array) {|v| options[:ec2s] = v }
|
29
31
|
opt.on('', '--dry-run') {|v| options[:dry_run] = true }
|
30
32
|
opt.on('-e', '--export') {|v| mode = :export }
|
31
33
|
opt.on('-o', '--output FILE') {|v| output_file = v }
|
@@ -73,7 +75,7 @@ begin
|
|
73
75
|
output_file = 'Groupfile' if output_file == '-'
|
74
76
|
requires = []
|
75
77
|
|
76
|
-
client.export do |exported, converter|
|
78
|
+
client.export(options) do |exported, converter|
|
77
79
|
exported.each do |vpc, security_groups|
|
78
80
|
group_file = File.join(File.dirname(output_file), "#{vpc || :classic}.group")
|
79
81
|
requires << group_file
|
@@ -96,10 +98,10 @@ begin
|
|
96
98
|
else
|
97
99
|
if output_file == '-'
|
98
100
|
logger.info('# Export SecurityGroup')
|
99
|
-
puts client.export
|
101
|
+
puts client.export(options)
|
100
102
|
else
|
101
103
|
logger.info("Export SecurityGroup to `#{output_file}`")
|
102
|
-
open(output_file, 'wb') {|f| f.puts client.export }
|
104
|
+
open(output_file, 'wb') {|f| f.puts client.export(options) }
|
103
105
|
end
|
104
106
|
end
|
105
107
|
when :apply
|
data/lib/piculet/client.rb
CHANGED
@@ -19,8 +19,10 @@ module Piculet
|
|
19
19
|
AWS.memoize { walk(file) }
|
20
20
|
end
|
21
21
|
|
22
|
-
def export
|
23
|
-
exported = AWS.memoize
|
22
|
+
def export(options = {})
|
23
|
+
exported = AWS.memoize do
|
24
|
+
Exporter.export(@options.ec2, options)
|
25
|
+
end
|
24
26
|
|
25
27
|
if block_given?
|
26
28
|
converter = proc do |src|
|
@@ -57,6 +59,10 @@ module Piculet
|
|
57
59
|
end
|
58
60
|
|
59
61
|
dsl_ec2s.each do |vpc, ec2_dsl|
|
62
|
+
if @options.ec2s
|
63
|
+
next unless @options.ec2s.any? {|i| (i == 'classic' and vpc.nil?) or i == vpc }
|
64
|
+
end
|
65
|
+
|
60
66
|
ec2_aws = aws_ec2s[vpc]
|
61
67
|
|
62
68
|
if ec2_aws
|
@@ -75,6 +81,11 @@ module Piculet
|
|
75
81
|
|
76
82
|
sg_list_dsl.each do |key, sg_dsl|
|
77
83
|
name = key[0]
|
84
|
+
|
85
|
+
if @options.sg_names
|
86
|
+
next unless @options.sg_names.include?(name)
|
87
|
+
end
|
88
|
+
|
78
89
|
sg_aws = sg_list_aws[key]
|
79
90
|
|
80
91
|
unless sg_aws
|
@@ -85,16 +96,33 @@ module Piculet
|
|
85
96
|
|
86
97
|
sg_list_dsl.each do |key, sg_dsl|
|
87
98
|
name = key[0]
|
99
|
+
|
100
|
+
if @options.sg_names
|
101
|
+
next unless @options.sg_names.include?(name)
|
102
|
+
end
|
103
|
+
|
88
104
|
sg_aws = sg_list_aws.delete(key)
|
89
105
|
walk_security_group(sg_dsl, sg_aws)
|
90
106
|
end
|
91
107
|
|
92
108
|
sg_list_aws.each do |key, sg_aws|
|
109
|
+
name = key[0]
|
110
|
+
|
111
|
+
if @options.sg_names
|
112
|
+
next unless @options.sg_names.include?(name)
|
113
|
+
end
|
114
|
+
|
93
115
|
sg_aws.ingress_ip_permissions.each {|i| i.delete }
|
94
116
|
sg_aws.egress_ip_permissions.each {|i| i.delete } if vpc
|
95
117
|
end
|
96
118
|
|
97
119
|
sg_list_aws.each do |key, sg_aws|
|
120
|
+
name = key[0]
|
121
|
+
|
122
|
+
if @options.sg_names
|
123
|
+
next unless @options.sg_names.include?(name)
|
124
|
+
end
|
125
|
+
|
98
126
|
sg_aws.delete
|
99
127
|
end
|
100
128
|
end
|
data/lib/piculet/exporter.rb
CHANGED
@@ -3,21 +3,31 @@ require 'piculet/ext/ip-permission-collection-ext'
|
|
3
3
|
module Piculet
|
4
4
|
class Exporter
|
5
5
|
class << self
|
6
|
-
def export(ec2)
|
7
|
-
self.new(ec2).export
|
6
|
+
def export(ec2, options = {})
|
7
|
+
self.new(ec2, options).export
|
8
8
|
end
|
9
9
|
end # of class methods
|
10
10
|
|
11
|
-
def initialize(ec2)
|
11
|
+
def initialize(ec2, options = {})
|
12
12
|
@ec2 = ec2
|
13
|
+
@options = options
|
13
14
|
end
|
14
15
|
|
15
16
|
def export
|
16
17
|
result = {}
|
18
|
+
ec2s = @options[:ec2s]
|
19
|
+
sg_names = @options[:sg_names]
|
20
|
+
sgs = @ec2.security_groups
|
21
|
+
sgs = sgs.filter('group-name', *sg_names) if sg_names
|
17
22
|
|
18
|
-
|
23
|
+
sgs.each do |sg|
|
19
24
|
vpc = sg.vpc
|
20
25
|
vpc = vpc.id if vpc
|
26
|
+
|
27
|
+
if ec2s
|
28
|
+
next unless ec2s.any? {|i| (i == 'classic' and vpc.nil?) or i == vpc }
|
29
|
+
end
|
30
|
+
|
21
31
|
result[vpc] ||= {}
|
22
32
|
result[vpc][sg.id] = export_security_group(sg)
|
23
33
|
end
|
data/lib/piculet/version.rb
CHANGED
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: piculet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.19.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.19.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: term-ansicolor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.2.2
|
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: 1.2.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,14 +56,14 @@ dependencies:
|
|
56
56
|
name: rake
|
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: :development
|
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
|
@@ -120,17 +120,17 @@ require_paths:
|
|
120
120
|
- lib
|
121
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- -
|
123
|
+
- - '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- -
|
128
|
+
- - '>='
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.0.14
|
134
134
|
signing_key:
|
135
135
|
specification_version: 4
|
136
136
|
summary: Piculet is a tool to manage EC2 Security Group.
|