miam 0.2.4.beta16 → 0.2.4
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/bin/miam +1 -0
- data/lib/miam/client.rb +7 -3
- data/lib/miam/driver.rb +1 -1
- data/lib/miam/dsl/context.rb +5 -1
- data/lib/miam/version.rb +1 -1
- data/lib/miam.rb +1 -1
- data/miam.gemspec +1 -1
- data/spec/miam/exclude_spec.rb +15 -0
- metadata +10 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 54eba51d4fa9323784be7dce0592ab0762ac43baf07be131708d5f2129ef31ea
|
|
4
|
+
data.tar.gz: 54d049bd184ec5899f0fb58d744c19c619f3bab07335812e5ae552dad3ed8367
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f45931d3d409f81a1a46a57177e51090a509f9978b2a88b2ecdeb009d1728bd28e9ff98ebc7f6d2814ef554903b672ea46d333e5199dd99672b7136c46d69c73
|
|
7
|
+
data.tar.gz: 2f80c18b24701faf30111ea8c23575baf1de72a3b7489ab4133adddde75eb90eb98d90229247fee84c88cad95bd784cb9f09165f509f8578ca1212b1a6fbb279
|
data/bin/miam
CHANGED
|
@@ -54,6 +54,7 @@ ARGV.options do |opt|
|
|
|
54
54
|
opt.on('' , '--target REGEXP') {|v| (options[:target] ||= []) << Regexp.new(v) }
|
|
55
55
|
opt.on('' , '--exclude REGEXP') {|v| (options[:exclude] ||= []) << Regexp.new(v) }
|
|
56
56
|
opt.on('' , '--ignore-login-profile') { options[:ignore_login_profile] = true }
|
|
57
|
+
opt.on('' , '--no-access-key') { options[:no_access_key] = true }
|
|
57
58
|
opt.on('' , '--no-color') { options[:color] = false }
|
|
58
59
|
opt.on('' , '--no-progress') { options[:no_progress] = true }
|
|
59
60
|
opt.on('' , '--debug') { options[:debug] = true }
|
data/lib/miam/client.rb
CHANGED
|
@@ -2,7 +2,10 @@ class Miam::Client
|
|
|
2
2
|
include Miam::Logger::Helper
|
|
3
3
|
|
|
4
4
|
def initialize(options = {})
|
|
5
|
-
@options = {
|
|
5
|
+
@options = {
|
|
6
|
+
format: :ruby,
|
|
7
|
+
exclude: []
|
|
8
|
+
}.merge(options)
|
|
6
9
|
aws_config = options.delete(:aws_config) || {}
|
|
7
10
|
@iam = Aws::IAM::Client.new(aws_config)
|
|
8
11
|
@sts = Aws::STS::Client.new(aws_config)
|
|
@@ -58,6 +61,7 @@ class Miam::Client
|
|
|
58
61
|
|
|
59
62
|
def walk(file)
|
|
60
63
|
expected = load_file(file)
|
|
64
|
+
@options[:exclude] += expected[:exclude]
|
|
61
65
|
|
|
62
66
|
actual, group_users, instance_profile_roles = Miam::Exporter.export(@iam, @options)
|
|
63
67
|
updated = pre_walk_managed_policies(expected[:policies], actual[:policies])
|
|
@@ -87,7 +91,7 @@ class Miam::Client
|
|
|
87
91
|
updated = walk_user(user_name, expected_attrs, actual_attrs) || updated
|
|
88
92
|
else
|
|
89
93
|
actual_attrs = @driver.create_user(user_name, expected_attrs)
|
|
90
|
-
access_key = @driver.create_access_key(user_name)
|
|
94
|
+
access_key = @driver.create_access_key(user_name) unless @options[:no_access_key]
|
|
91
95
|
|
|
92
96
|
if access_key
|
|
93
97
|
@password_manager.puts_password(user_name, access_key[:access_key_id], access_key[:secret_access_key])
|
|
@@ -539,7 +543,7 @@ class Miam::Client
|
|
|
539
543
|
result = true
|
|
540
544
|
|
|
541
545
|
if @options[:exclude]
|
|
542
|
-
result &&= @options[:exclude].all? {|r| name !~ r}
|
|
546
|
+
result &&= @options[:exclude].all? {|r| name !~ r }
|
|
543
547
|
end
|
|
544
548
|
|
|
545
549
|
if @options[:target]
|
data/lib/miam/driver.rb
CHANGED
|
@@ -358,7 +358,7 @@ class Miam::Driver
|
|
|
358
358
|
type_s = type.slice(0, 1).upcase + type.slice(1..-1)
|
|
359
359
|
|
|
360
360
|
log(:info, "Update #{type_s} `#{name}`", :color => :green)
|
|
361
|
-
log(:info, " detach policies=#{policies.join(',')}", :color => :
|
|
361
|
+
log(:info, " detach policies=#{policies.join(',')}", :color => :red)
|
|
362
362
|
|
|
363
363
|
unless_dry_run do
|
|
364
364
|
policies.each do |arn|
|
data/lib/miam/dsl/context.rb
CHANGED
|
@@ -12,7 +12,7 @@ class Miam::DSL::Context
|
|
|
12
12
|
def initialize(path, options = {}, &block)
|
|
13
13
|
@path = path
|
|
14
14
|
@options = options
|
|
15
|
-
@result = {:users => {}, :groups => {}, :roles => {}, :instance_profiles => {}, :policies => {}}
|
|
15
|
+
@result = {:users => {}, :groups => {}, :roles => {}, :instance_profiles => {}, :policies => {}, :exclude => []}
|
|
16
16
|
|
|
17
17
|
@context = Hashie::Mash.new(
|
|
18
18
|
:path => path,
|
|
@@ -41,6 +41,10 @@ class Miam::DSL::Context
|
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
def exclude(pattern)
|
|
45
|
+
@result[:exclude] << pattern
|
|
46
|
+
end
|
|
47
|
+
|
|
44
48
|
def user(name, user_options = {}, &block)
|
|
45
49
|
name = name.to_s
|
|
46
50
|
|
data/lib/miam/version.rb
CHANGED
data/lib/miam.rb
CHANGED
data/miam.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ['lib']
|
|
20
20
|
|
|
21
|
-
spec.add_dependency 'aws-sdk-
|
|
21
|
+
spec.add_dependency 'aws-sdk-iam', '~> 1'
|
|
22
22
|
spec.add_dependency 'ruby-progressbar'
|
|
23
23
|
spec.add_dependency 'parallel'
|
|
24
24
|
spec.add_dependency 'term-ansicolor'
|
data/spec/miam/exclude_spec.rb
CHANGED
|
@@ -234,4 +234,19 @@ describe 'exclude option' do
|
|
|
234
234
|
expect(updated).to be_falsey
|
|
235
235
|
end
|
|
236
236
|
end
|
|
237
|
+
|
|
238
|
+
context 'when specifying exclude option in a DSL' do
|
|
239
|
+
let(:exclude_everything) do
|
|
240
|
+
<<-RUBY
|
|
241
|
+
exclude /.*/
|
|
242
|
+
RUBY
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
subject { client(exclude: []) }
|
|
246
|
+
|
|
247
|
+
it do
|
|
248
|
+
updated = apply(subject) { exclude_everything }
|
|
249
|
+
expect(updated).to be_falsey
|
|
250
|
+
end
|
|
251
|
+
end
|
|
237
252
|
end
|
metadata
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: miam
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.4
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Genki Sugawara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-02-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: aws-sdk-
|
|
14
|
+
name: aws-sdk-iam
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.0.42
|
|
20
|
-
- - "<"
|
|
17
|
+
- - "~>"
|
|
21
18
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
19
|
+
version: '1'
|
|
23
20
|
type: :runtime
|
|
24
21
|
prerelease: false
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
23
|
requirements:
|
|
27
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '3'
|
|
26
|
+
version: '1'
|
|
33
27
|
- !ruby/object:Gem::Dependency
|
|
34
28
|
name: ruby-progressbar
|
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -246,12 +240,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
246
240
|
version: '0'
|
|
247
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
242
|
requirements:
|
|
249
|
-
- - "
|
|
243
|
+
- - ">="
|
|
250
244
|
- !ruby/object:Gem::Version
|
|
251
|
-
version:
|
|
245
|
+
version: '0'
|
|
252
246
|
requirements: []
|
|
253
247
|
rubyforge_project:
|
|
254
|
-
rubygems_version: 2.7.
|
|
248
|
+
rubygems_version: 2.7.6
|
|
255
249
|
signing_key:
|
|
256
250
|
specification_version: 4
|
|
257
251
|
summary: Miam is a tool to manage IAM.
|