sumomo 0.10.0 → 0.10.1
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/exe/sumomo +63 -45
- data/lib/sumomo/version.rb +1 -1
- data/lib/sumomo.rb +15 -1
- data/sumomo.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f4f67797a004db69b413bc1abd72dd8d26a289847a1ec6943d4b84d3ec2e034
|
4
|
+
data.tar.gz: b28799dfccbebbcb03f3a96af34f383bd94d2ec979c405e354ea36164f11ab88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4ca377095ae8386d059a35f32efc6c7f57696dd1457301beeee36e6734d437c1cb1b09f1ff4263f9d3d01d517d6bc0aa42e9377c9c0a653e02325e2c7bf6e7c
|
7
|
+
data.tar.gz: 131bf090f8161b6ebe07ddd0eefb304e34426a7aca4c19eb4215111d9b61641977a73ba27baac471f81c6abc6fa6a908bb3438b5c06ca9230a209a3918ae5bd4
|
data/exe/sumomo
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'optimist'
|
5
5
|
require 'sumomo'
|
6
6
|
require 'yaml'
|
7
7
|
|
8
8
|
SUB_COMMANDS = %w[delete create update outputs show diff testapi].freeze
|
9
|
-
global_opts =
|
9
|
+
global_opts = Optimist.options do
|
10
10
|
banner <<-USAGE
|
11
11
|
Sumomo v#{Sumomo::VERSION}
|
12
12
|
|
@@ -26,49 +26,67 @@ p ENV['AWS_PROFILE']
|
|
26
26
|
|
27
27
|
cmd = ARGV.shift # get the subcommand
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
29
|
+
case cmd
|
30
|
+
when 'delete'
|
31
|
+
Sumomo.delete_stack(name: ARGV[0], region: global_opts[:region])
|
32
|
+
|
33
|
+
when 'rollback'
|
34
|
+
Sumomo.rollback_stack(name: ARGV[0], region: global_opts[:region])
|
35
|
+
|
36
|
+
when 'create', 'update', 'show', 'diff'
|
37
|
+
local_opts = Optimist.options do
|
38
|
+
opt :filename, 'File that describes the stack', type: :string, default: 'Sumomofile'
|
39
|
+
opt :changeset, 'Create a changeset instead of directly update', type: :boolean, default: false
|
40
|
+
opt :rollback, 'Specify whether or not to rollback. Allowed values are [enable, disable]', type: :string, default: 'unspecified'
|
41
|
+
end
|
42
|
+
|
43
|
+
changeset = !!local_opts[:changeset]
|
44
|
+
rollback = local_opts[:rollback].to_sym
|
45
|
+
|
46
|
+
if rollback == :disable && local_opts[:changeset] == false
|
47
|
+
Optimist.die "Rollback cannot be set to disable when changeset is set to false, because we will end up in an update-failed state"
|
48
|
+
end
|
49
|
+
|
50
|
+
Sumomo.manage_stack(
|
51
|
+
name: ARGV[0],
|
52
|
+
cmd: cmd,
|
53
|
+
changeset: changeset,
|
54
|
+
region: global_opts[:region],
|
55
|
+
rollback: rollback) do
|
56
|
+
|
57
|
+
proc = proc {}
|
58
|
+
eval File.read(local_opts[:filename]), proc.binding, local_opts[:filename]
|
59
|
+
end
|
60
|
+
|
61
|
+
when 'outputs'
|
62
|
+
puts "Outputs for stack #{ARGV[0]}"
|
63
|
+
puts Sumomo.get_stack_outputs(name: ARGV[0], region: global_opts[:region]).to_yaml
|
64
|
+
|
65
|
+
when 'login'
|
66
|
+
puts "Login to stack #{ARGV[0]} instance at #{ARGV[1]}"
|
67
|
+
`aws s3 cp s3://#{ARGV[0]}/cloudformation/#{ARGV[0]}_master_key.pem x.txt`
|
68
|
+
key = JSON.parse(File.read('x.txt'))['value'].
|
69
|
+
gsub('-----BEGIN RSA PRIVATE KEY----- ', "-----BEGIN RSA PRIVATE KEY-----\n").
|
70
|
+
gsub(' -----END RSA PRIVATE KEY-----', "\n-----END RSA PRIVATE KEY-----").
|
71
|
+
gsub(/(.{64}) /, "\\1\n")
|
72
|
+
File.write('key.pem', key)
|
73
|
+
`chmod 0600 key.pem`
|
74
|
+
exec "ssh -i 'key.pem' ec2-user@#{ARGV[1]} #{ARGV[2]}"
|
75
|
+
|
76
|
+
when 'testapi'
|
77
|
+
local_opts = Optimist.options do
|
78
|
+
opt :filename, 'File that describes the stack', type: :string, default: 'Sumomofile'
|
79
|
+
opt :apiname, 'Name of the API you want to test', type: :string
|
80
|
+
opt :prettyprint, 'Test API outputs JSON with nice indentation', type: :boolean, default: true
|
81
|
+
end
|
82
|
+
puts 'API Test Mode'
|
83
|
+
Sumomo.test_api(local_opts[:apiname], local_opts[:prettyprint]) do
|
84
|
+
proc = proc {}
|
85
|
+
eval File.read(local_opts[:filename]), proc.binding, local_opts[:filename]
|
86
|
+
end
|
87
|
+
exit(0)
|
88
|
+
else
|
89
|
+
Optimist.die "Unknown subcommand #{cmd.inspect}"
|
72
90
|
end
|
73
91
|
|
74
92
|
unless %w[show diff].include?(cmd)
|
data/lib/sumomo/version.rb
CHANGED
data/lib/sumomo.rb
CHANGED
@@ -26,7 +26,14 @@ module Sumomo
|
|
26
26
|
"cloudformation/#{make_master_key_name(name: name)}.pem"
|
27
27
|
end
|
28
28
|
|
29
|
-
def self.manage_stack(
|
29
|
+
def self.manage_stack(
|
30
|
+
name:,
|
31
|
+
region:,
|
32
|
+
cmd:'update',
|
33
|
+
sns_arn: nil,
|
34
|
+
rollback: :unspecified,
|
35
|
+
changeset: false, &block)
|
36
|
+
|
30
37
|
cf = Aws::CloudFormation::Client.new(region: region)
|
31
38
|
s3 = Aws::S3::Client.new(region: region)
|
32
39
|
ec2 = Aws::EC2::Client.new(region: region)
|
@@ -164,6 +171,7 @@ module Sumomo
|
|
164
171
|
stack_name: name,
|
165
172
|
template_url: store.url('cloudformation/template'),
|
166
173
|
parameters: hidden_values,
|
174
|
+
disable_rollback: rollback == :disable,
|
167
175
|
capabilities: ['CAPABILITY_IAM', 'CAPABILITY_NAMED_IAM']
|
168
176
|
}
|
169
177
|
|
@@ -448,6 +456,12 @@ module Sumomo
|
|
448
456
|
end
|
449
457
|
end
|
450
458
|
|
459
|
+
def self.rollback_stack(name:, region:)
|
460
|
+
cf = Aws::CloudFormation::Client.new(region: region)
|
461
|
+
|
462
|
+
cf.rollback_stack(stack_name: name)
|
463
|
+
end
|
464
|
+
|
451
465
|
def self.get_stack_outputs(name:, region:)
|
452
466
|
cf = Aws::CloudFormation::Client.new(region: region)
|
453
467
|
|
data/sumomo.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sumomo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Siaw
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: optimist
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|