· 6 years ago · Mar 12, 2019, 12:00 PM
1require 'json'
2
3class Creds
4 attr_reader :access_key_id,
5 :secret_access_key,
6 :session_token,
7 :expiration,
8 :region
9
10 def initialize
11 @creds_hash = creds_hash
12 @access_key_id = key_id
13 @secret_access_key = secret_key
14 @session_token = token
15 @expiration = expires
16 @region = reg
17 end
18
19 private
20
21 def api_call
22 `aws sts assume-role --role-arn "arn:aws:iam::242906888793:role/AWS_Sandbox" --role-session-name AWS_Sandbox`
23 end
24
25 def creds_hash
26 JSON.parse(api_call).to_hash
27 rescue StandardError => e
28 puts "Failed to get token. Error is: #{e}"
29 end
30
31 def creds
32 @creds_hash['Credentials']
33 end
34
35 def key_id
36 creds['AccessKeyId']
37 end
38
39 def secret_key
40 creds['SecretAccessKey']
41 end
42
43 def token
44 creds['SessionToken']
45 end
46
47 def expires
48 creds['Expiration']
49 end
50
51 def reg
52 'us-east-2'
53 end
54end
55
56class Write
57 def initialize(file: 'terraform.tfvars')
58 @creds = Creds.new
59 @where_to_write = file
60 end
61
62 def run
63 File.open(@where_to_write, 'w') do |file|
64 file.write("access_key = #{@creds.access_key_id}\n")
65 file.write("secret_key = #{@creds.secret_access_key}\n")
66 file.write("token = #{@creds.session_token}\n")
67 file.write("reg = #{@creds.region}")
68 end
69 end
70end
71
72Write.new.run