practice_terraforming 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/practice_terraforming.rb +1 -0
- data/lib/practice_terraforming/cli.rb +5 -0
- data/lib/practice_terraforming/resource/iam_user_group_membership.rb +79 -0
- data/lib/practice_terraforming/template/tf/iam_user_group_membership.erb +9 -0
- data/lib/practice_terraforming/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 470a3786475fc6a518e01d775d2dcf520ae46caf
|
4
|
+
data.tar.gz: cb1f175cd0bd8d8a20d696cde1ec588536f5ae62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d428d5b761d781f2bb50cb4c62e4c32c7afffa68e6697dad4eb96a34f62f2c9ec259372a9fd222adddba52cb7e4e141547547539d00fa2535489bb2fda5b39c5
|
7
|
+
data.tar.gz: 921b270a48dc04b78935c73d00d7cba769bea08a79660e34639f6656f25c21baee8061e711462805dfc521ee02b8fc1ffa00da2a3a71febf08dd8b796ffbb86e
|
data/Gemfile.lock
CHANGED
@@ -13,6 +13,7 @@ require "practice_terraforming/cli"
|
|
13
13
|
require "practice_terraforming/resource/iam_role"
|
14
14
|
require "practice_terraforming/resource/iam_role_policy_attachment"
|
15
15
|
require "practice_terraforming/resource/iam_user"
|
16
|
+
require "practice_terraforming/resource/iam_user_group_membership"
|
16
17
|
require "practice_terraforming/resource/iam_user_policy_attachment"
|
17
18
|
require "practice_terraforming/resource/iam_group_policy_attachment"
|
18
19
|
require "practice_terraforming/resource/iam_policy_attachment"
|
@@ -47,6 +47,11 @@ module PracticeTerraforming
|
|
47
47
|
execute(PracticeTerraforming::Resource::IAMGroupPolicyAttachment, options)
|
48
48
|
end
|
49
49
|
|
50
|
+
desc "iamugm", "Iam User Group Membership"
|
51
|
+
def iamugm
|
52
|
+
execute(PracticeTerraforming::Resource::IAMUserGroupMembership, options)
|
53
|
+
end
|
54
|
+
|
50
55
|
private
|
51
56
|
|
52
57
|
def configure_aws(options)
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PracticeTerraforming
|
4
|
+
module Resource
|
5
|
+
class IAMUserGroupMembership
|
6
|
+
include PracticeTerraforming::Util
|
7
|
+
|
8
|
+
# TODO: Select appropriate Client class from here:
|
9
|
+
# http://docs.aws.amazon.com/sdkforruby/api/index.html
|
10
|
+
def self.tf(client: Aws::IAM::Client.new)
|
11
|
+
self.new(client).tf
|
12
|
+
end
|
13
|
+
|
14
|
+
# TODO: Select appropriate Client class from here:
|
15
|
+
# http://docs.aws.amazon.com/sdkforruby/api/index.html
|
16
|
+
def self.tfstate(client: Aws::IAM::Client.new)
|
17
|
+
self.new(client).tfstate
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(client)
|
21
|
+
@client = client
|
22
|
+
end
|
23
|
+
|
24
|
+
def tf
|
25
|
+
apply_template(@client, "tf/iam_user_group_membership")
|
26
|
+
end
|
27
|
+
|
28
|
+
def tfstate
|
29
|
+
user_group_memberships.inject({}) do |resources, membership|
|
30
|
+
attributes = {
|
31
|
+
"id" => membership[:name],
|
32
|
+
"groups.#" => "1",
|
33
|
+
"groups.1" => membership[:group],
|
34
|
+
"user" => membership[:user]
|
35
|
+
}
|
36
|
+
resources["aws_iam_user_group_membership.#{module_name_of(membership)}"] = {
|
37
|
+
"type" => "aws_iam_user_group_membership",
|
38
|
+
"primary" => {
|
39
|
+
"id" => membership[:name],
|
40
|
+
"attributes" => attributes
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
resources
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def user_group_membership_name_from(user, group)
|
51
|
+
"#{user.user_name}-#{group.group_name}-membership"
|
52
|
+
end
|
53
|
+
|
54
|
+
def iam_groups
|
55
|
+
@client.list_groups.map(&:groups).flatten
|
56
|
+
end
|
57
|
+
|
58
|
+
def group_members_of(group)
|
59
|
+
@client.get_group(group_name: group.group_name).users
|
60
|
+
end
|
61
|
+
|
62
|
+
def user_group_memberships
|
63
|
+
iam_groups.map do |group|
|
64
|
+
group_members_of(group).map do |user|
|
65
|
+
{
|
66
|
+
group: group.group_name,
|
67
|
+
user: user.user_name,
|
68
|
+
name: user_group_membership_name_from(user, group)
|
69
|
+
}
|
70
|
+
end
|
71
|
+
end.flatten
|
72
|
+
end
|
73
|
+
|
74
|
+
def module_name_of(membership)
|
75
|
+
normalize_module_name(membership[:name])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: practice_terraforming
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- masatonaka
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- lib/practice_terraforming/resource/iam_role.rb
|
164
164
|
- lib/practice_terraforming/resource/iam_role_policy_attachment.rb
|
165
165
|
- lib/practice_terraforming/resource/iam_user.rb
|
166
|
+
- lib/practice_terraforming/resource/iam_user_group_membership.rb
|
166
167
|
- lib/practice_terraforming/resource/iam_user_policy_attachment.rb
|
167
168
|
- lib/practice_terraforming/resource/s3.rb
|
168
169
|
- lib/practice_terraforming/template/tf/iam_group_policy_attachment.erb
|
@@ -170,6 +171,7 @@ files:
|
|
170
171
|
- lib/practice_terraforming/template/tf/iam_role.erb
|
171
172
|
- lib/practice_terraforming/template/tf/iam_role_policy_attachment.erb
|
172
173
|
- lib/practice_terraforming/template/tf/iam_user.erb
|
174
|
+
- lib/practice_terraforming/template/tf/iam_user_group_membership.erb
|
173
175
|
- lib/practice_terraforming/template/tf/iam_user_policy_attachment.erb
|
174
176
|
- lib/practice_terraforming/template/tf/s3.erb
|
175
177
|
- lib/practice_terraforming/util.rb
|