stackit 0.1.4 → 0.1.5
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/stackit +4 -2
- data/lib/stackit/cli/base_cli.rb +81 -0
- data/lib/stackit/{cli.rb → cli/stack_cli.rb} +2 -87
- data/lib/stackit/cli/stackit_cli.rb +43 -0
- data/lib/stackit/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbde49a4efbd662200baecfed8b4b7c40f9c340c
|
4
|
+
data.tar.gz: e565d4fb07afca1d2410afa98734ae455bf350f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02c76bfdafbd85d0c7e186013fee0fac15540d71b93de8694b5f92577120e87decd6ea0b18f34171dcb67671fc79d684e9d5c71bc7577f116bd3661f9e48dabc
|
7
|
+
data.tar.gz: 83bb2a02c71e87d3ab04861797170a219c442cee989c19b46a0380d90190ab03e4b1839b8f7a07d407b4debbd2bfcec0825921b74fb5f31daa199de6b63b0d76
|
data/bin/stackit
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'stackit'
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
module Stackit
|
5
|
+
class BaseCli < Thor
|
6
|
+
|
7
|
+
class_option :environment, :aliases => '-e', :desc => "Your stack environment (dev, staging, prod, etc)", :default => 'default'
|
8
|
+
class_option :profile, desc: 'AWS profile'
|
9
|
+
class_option :region, desc: 'AWS region', default: 'us-east-1'
|
10
|
+
class_option :debug, type: :boolean, default: false
|
11
|
+
class_option :verbose, type: :boolean, default: false
|
12
|
+
class_option :assume_role, type: :hash, :desc => 'IAM role name and optional duration to keep the STS token valid'
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
super(*args)
|
16
|
+
init_cli
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.banner(task, namespace = true, subcommand = false)
|
20
|
+
"#{basename} #{task.usage}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.subcommand_prefix
|
24
|
+
self.name.gsub(%r{.*::}, '').gsub(%r{^[A-Z]}) { |match| match[0].downcase }.gsub(%r{[A-Z]}) { |match| "-#{match[0].downcase}" }
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.exit_on_failure?
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'version', 'Displays StackIT version'
|
32
|
+
def version
|
33
|
+
puts <<-LOGO
|
34
|
+
_____ _ _ _______ _______
|
35
|
+
(_____) (_)_ (_) _ (_______)(__ _ __)
|
36
|
+
(_)___ (___) ____ ___ (_)(_) (_) (_)
|
37
|
+
(___)_ (_) (____) _(___)(___) (_) (_)
|
38
|
+
____(_)(_)_( )_( )(_)___ (_)(_) __(_)__ (_)
|
39
|
+
(_____) (__)(__)_) (____)(_) (_)(_______) (_) v#{Stackit::VERSION}
|
40
|
+
|
41
|
+
Simple, elegant CloudFormation dependency management.
|
42
|
+
|
43
|
+
LOGO
|
44
|
+
end
|
45
|
+
|
46
|
+
no_commands do
|
47
|
+
|
48
|
+
def init_cli
|
49
|
+
|
50
|
+
Stackit.aws.region = options[:region] if options[:region]
|
51
|
+
Stackit.environment = options[:environment].to_sym if options[:environment]
|
52
|
+
Stackit.debug = !!options[:debug]
|
53
|
+
if Stackit.debug
|
54
|
+
Stackit.logger.level = Logger::DEBUG
|
55
|
+
Stackit.logger.debug "Initializing CLI in debug mode."
|
56
|
+
begin
|
57
|
+
require 'pry-byebug'
|
58
|
+
rescue LoadError; end
|
59
|
+
elsif options[:verbose]
|
60
|
+
Stackit.logger.level = Logger::INFO
|
61
|
+
else
|
62
|
+
Stackit.logger.level = Logger::ERROR
|
63
|
+
end
|
64
|
+
if options[:profile]
|
65
|
+
Stackit.aws.profile = options[:profile]
|
66
|
+
elsif options[:environment]
|
67
|
+
Stackit.aws.credentials = Stackit.aws.load_credentials(
|
68
|
+
options[:environment]
|
69
|
+
)
|
70
|
+
end
|
71
|
+
if options[:assume_role] && options[:assume_role].has_key?('name')
|
72
|
+
name = options[:assume_role]['name']
|
73
|
+
duration = options[:assume_role].has_key?('duration') ? options[:assume_role]['duration'] : 3600
|
74
|
+
Stackit.aws.assume_role!(name, duration)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -1,28 +1,12 @@
|
|
1
1
|
require 'stackit'
|
2
|
+
require 'stackit/cli/base_cli'
|
2
3
|
require 'thor'
|
3
4
|
|
4
5
|
module Stackit
|
5
|
-
class
|
6
|
-
|
7
|
-
class_option :environment, :aliases => '-e', :desc => "Your stack environment (dev, staging, prod, etc)", :default => 'default'
|
8
|
-
class_option :profile, desc: 'AWS profile'
|
9
|
-
class_option :region, desc: 'AWS region', default: 'us-east-1'
|
10
|
-
class_option :debug, type: :boolean, default: false
|
11
|
-
class_option :verbose, type: :boolean, default: false
|
12
|
-
class_option :assume_role, type: :hash, :desc => 'IAM role name and optional duration to keep the STS token valid'
|
6
|
+
class StackCli < BaseCli
|
13
7
|
|
14
8
|
def initialize(*args)
|
15
9
|
super(*args)
|
16
|
-
init_cli
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.banner(task, namespace = true, subcommand = false)
|
20
|
-
#"#{basename} #{subcommand_prefix} #{task.usage}"
|
21
|
-
"#{basename} #{task.usage}"
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.subcommand_prefix
|
25
|
-
self.name.gsub(%r{.*::}, '').gsub(%r{^[A-Z]}) { |match| match[0].downcase }.gsub(%r{[A-Z]}) { |match| "-#{match[0].downcase}" }
|
26
10
|
end
|
27
11
|
|
28
12
|
desc 'create-stack', 'Creates a new CloudFormation stack'
|
@@ -95,74 +79,5 @@ module Stackit
|
|
95
79
|
}).delete!
|
96
80
|
end
|
97
81
|
|
98
|
-
desc 'create-keypair', 'Creates a new EC2 keypair and returns it\'s corresponding private key'
|
99
|
-
method_option :name, desc: 'The name of the keypair', :required => true
|
100
|
-
def create_keypair
|
101
|
-
puts Stackit.aws.ec2.create_key_pair({
|
102
|
-
key_name: options['name']
|
103
|
-
})['key_material']
|
104
|
-
end
|
105
|
-
|
106
|
-
desc 'delete-keypair', 'Deletes an existing EC2 keypair'
|
107
|
-
method_option :name, desc: 'The name of the keypair', :required => true
|
108
|
-
def delete_keypair
|
109
|
-
Stackit.aws.ec2.delete_key_pair({
|
110
|
-
key_name: options['name']
|
111
|
-
})
|
112
|
-
end
|
113
|
-
|
114
|
-
desc 'version', 'Displays StackIT version'
|
115
|
-
def version
|
116
|
-
puts <<-LOGO
|
117
|
-
_____ _ _ _______ _______
|
118
|
-
(_____) (_)_ (_) _ (_______)(__ _ __)
|
119
|
-
(_)___ (___) ____ ___ (_)(_) (_) (_)
|
120
|
-
(___)_ (_) (____) _(___)(___) (_) (_)
|
121
|
-
____(_)(_)_( )_( )(_)___ (_)(_) __(_)__ (_)
|
122
|
-
(_____) (__)(__)_) (____)(_) (_)(_______) (_) v#{Stackit::VERSION}
|
123
|
-
|
124
|
-
Simple, elegant CloudFormation dependency management.
|
125
|
-
|
126
|
-
LOGO
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.exit_on_failure?
|
130
|
-
true
|
131
|
-
end
|
132
|
-
|
133
|
-
no_commands do
|
134
|
-
|
135
|
-
def init_cli
|
136
|
-
|
137
|
-
Stackit.aws.region = options[:region] if options[:region]
|
138
|
-
Stackit.environment = options[:environment].to_sym if options[:environment]
|
139
|
-
Stackit.debug = !!options[:debug]
|
140
|
-
if Stackit.debug
|
141
|
-
Stackit.logger.level = Logger::DEBUG
|
142
|
-
Stackit.logger.debug "Initializing CLI in debug mode."
|
143
|
-
begin
|
144
|
-
require 'pry-byebug'
|
145
|
-
rescue LoadError; end
|
146
|
-
elsif options[:verbose]
|
147
|
-
Stackit.logger.level = Logger::INFO
|
148
|
-
else
|
149
|
-
Stackit.logger.level = Logger::ERROR
|
150
|
-
end
|
151
|
-
if options[:profile]
|
152
|
-
Stackit.aws.profile = options[:profile]
|
153
|
-
elsif options[:environment]
|
154
|
-
Stackit.aws.credentials = Stackit.aws.load_credentials(
|
155
|
-
options[:environment]
|
156
|
-
)
|
157
|
-
end
|
158
|
-
if options[:assume_role] && options[:assume_role].has_key?('name')
|
159
|
-
name = options[:assume_role]['name']
|
160
|
-
duration = options[:assume_role].has_key?('duration') ? options[:assume_role]['duration'] : 3600
|
161
|
-
Stackit.aws.assume_role!(name, duration)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
82
|
end
|
168
83
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'stackit'
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
module Stackit
|
5
|
+
class StackitCli < StackCli
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'create-keypair', 'Creates a new EC2 keypair and returns it\'s corresponding private key'
|
12
|
+
method_option :name, desc: 'The name of the keypair', :required => true
|
13
|
+
def create_keypair
|
14
|
+
puts Stackit.aws.ec2.create_key_pair({
|
15
|
+
key_name: options['name']
|
16
|
+
})['key_material']
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'delete-keypair', 'Deletes an existing EC2 keypair'
|
20
|
+
method_option :name, desc: 'The name of the keypair', :required => true
|
21
|
+
def delete_keypair
|
22
|
+
Stackit.aws.ec2.delete_key_pair({
|
23
|
+
key_name: options['name']
|
24
|
+
})
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'version', 'Displays StackIT version'
|
28
|
+
def version
|
29
|
+
puts <<-LOGO
|
30
|
+
_____ _ _ _______ _______
|
31
|
+
(_____) (_)_ (_) _ (_______)(__ _ __)
|
32
|
+
(_)___ (___) ____ ___ (_)(_) (_) (_)
|
33
|
+
(___)_ (_) (____) _(___)(___) (_) (_)
|
34
|
+
____(_)(_)_( )_( )(_)___ (_)(_) __(_)__ (_)
|
35
|
+
(_____) (__)(__)_) (____)(_) (_)(_______) (_) v#{Stackit::VERSION}
|
36
|
+
|
37
|
+
Simple, elegant CloudFormation dependency management.
|
38
|
+
|
39
|
+
LOGO
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
data/lib/stackit/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Hahn
|
@@ -142,7 +142,9 @@ files:
|
|
142
142
|
- bin/stackit
|
143
143
|
- lib/stackit.rb
|
144
144
|
- lib/stackit/aws.rb
|
145
|
-
- lib/stackit/cli.rb
|
145
|
+
- lib/stackit/cli/base_cli.rb
|
146
|
+
- lib/stackit/cli/stack_cli.rb
|
147
|
+
- lib/stackit/cli/stackit_cli.rb
|
146
148
|
- lib/stackit/stack.rb
|
147
149
|
- lib/stackit/stack/default_notifier.rb
|
148
150
|
- lib/stackit/stack/managed_stack.rb
|