runbook 1.0.0 → 1.1.0
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/.travis.yml +7 -10
- data/CHANGELOG.md +17 -0
- data/README.md +6 -5
- data/dockerfiles/Dockerfile-runbook +1 -1
- data/lib/runbook.rb +2 -0
- data/lib/runbook/cli.rb +0 -11
- data/lib/runbook/entity.rb +1 -1
- data/lib/runbook/extensions/statements.rb +1 -1
- data/lib/runbook/generators/project/project.rb +28 -9
- data/lib/runbook/run.rb +1 -1
- data/lib/runbook/runner.rb +2 -0
- data/lib/runbook/version.rb +1 -1
- data/runbook.gemspec +4 -3
- metadata +23 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11c80dcba3596671291c8d9dbd40a33ae5691963b27dffdd7459cb4f4ebd94be
|
4
|
+
data.tar.gz: a8a578797429344e1fa29c84cb395db5c9c725f4b35b00440e26708328fdca26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bda3ee51331bcac0c38f338e4ddcf001847328f07093ff1163b8a8b4394e523b116c05b88de449d7072dc90fbe51da3049f00778933a8e8d0b8d3eac39c935c0
|
7
|
+
data.tar.gz: 11420133d97afa081df1105bbf3dc1364b5722aa50e57f49777f761c2df88b152b50b4db80c2da81a8d10328bc85b46de51721a010113d26b965411243a51e68
|
data/.travis.yml
CHANGED
@@ -3,26 +3,23 @@ language: ruby
|
|
3
3
|
services:
|
4
4
|
- docker
|
5
5
|
rvm:
|
6
|
-
- 2.2.10
|
7
6
|
- 2.3.8
|
8
|
-
- 2.4.
|
9
|
-
- 2.5.
|
10
|
-
- 2.6.
|
7
|
+
- 2.4.10
|
8
|
+
- 2.5.8
|
9
|
+
- 2.6.6
|
10
|
+
- 2.7.2
|
11
|
+
- 3.0.0
|
11
12
|
gemfile:
|
12
13
|
- gemfiles/activesupport_5.gemfile
|
13
14
|
- gemfiles/activesupport_6.gemfile
|
14
15
|
matrix:
|
15
16
|
exclude:
|
16
|
-
- rvm: 2.2.3
|
17
|
-
gemfile: gemfiles/activesupport_6.gemfile
|
18
|
-
- rvm: 2.2.10
|
19
|
-
gemfile: gemfiles/activesupport_6.gemfile
|
20
17
|
- rvm: 2.3.8
|
21
18
|
gemfile: gemfiles/activesupport_6.gemfile
|
22
|
-
- rvm: 2.4.
|
19
|
+
- rvm: 2.4.10
|
23
20
|
gemfile: gemfiles/activesupport_6.gemfile
|
24
21
|
|
25
|
-
before_install: gem install bundler -v
|
22
|
+
before_install: gem install bundler -v 2.2.16
|
26
23
|
|
27
24
|
script:
|
28
25
|
- bundle exec rake spec_all
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,23 @@ This log maintains a list of all substantive changes to Runbook. The log include
|
|
4
4
|
|
5
5
|
## master
|
6
6
|
|
7
|
+
## `v1.1.0` (2021-05-21)
|
8
|
+
|
9
|
+
### Breaking Changes:
|
10
|
+
|
11
|
+
* Removes `runbook install` (should have happened in v1.0.0)
|
12
|
+
* Drops support for Ruby 2.2 and bundler < 2.2
|
13
|
+
|
14
|
+
### Features:
|
15
|
+
|
16
|
+
* Add support for Ruby 3.0.0 (thanks @pblesi!)
|
17
|
+
* Add metadata argument that saves TMUX panes: keep_panes (thanks @ClashTheBunny)
|
18
|
+
|
19
|
+
### Documentation:
|
20
|
+
|
21
|
+
* Update assert parameters description
|
22
|
+
* Update example for module class method (thanks @voodoologic!)
|
23
|
+
|
7
24
|
## `v1.0.0` (2020-07-24)
|
8
25
|
|
9
26
|
### Breaking Changes:
|
data/README.md
CHANGED
@@ -321,16 +321,16 @@ In the above example, the `note` statement must be wrapped in a `ruby_command` s
|
|
321
321
|
|
322
322
|
##### Assert
|
323
323
|
|
324
|
-
Runs the provided `cmd` repeatedly until it returns true. A timeout and maximum number of attempts can be set.
|
324
|
+
Runs the provided `cmd` repeatedly until it returns true. A timeout and maximum number of attempts can be set. When either the attempt or timeout limit is hit, a command can be specified that will be run. If no command is specified, the process will fail. Commands can optionally be specified as `raw`. This tells SSHKit to not perform auto-wrapping of the commands, but execute the exact string on the remote server. See SSHKit's documentation for more details.
|
325
325
|
|
326
326
|
```ruby
|
327
327
|
assert(
|
328
328
|
'service nginx status | grep "is running"',
|
329
329
|
cmd_ssh_config: {servers: ["host1.prod"], parallelization: {strategy: :parallel}},
|
330
330
|
cmd_raw: false,
|
331
|
-
interval: 3,
|
332
|
-
timeout: 300,
|
333
|
-
attempts: 3,
|
331
|
+
interval: 3, # How often, in seconds, to wait between tries
|
332
|
+
timeout: 300, # Total time, in seconds, to keep trying command, after which it will fail
|
333
|
+
attempts: 3, # Total number of attempts after which the process will fail
|
334
334
|
abort_statement: Runbook::Statements::Command.new(
|
335
335
|
"echo 'help' | mail -s 'need help' page-me@page-me.com",
|
336
336
|
ssh_config: {servers: [:local], parallelization: {strategy: :parallel}},
|
@@ -443,6 +443,7 @@ Metadata at execution time is structured as follows:
|
|
443
443
|
noop: false, # A boolean indicating if you are running in noop mode. ruby_command blocks are never evaluated in noop mode
|
444
444
|
auto: false, # A boolean indicating if you are running in auto mode
|
445
445
|
paranoid: true, # A boolean indicating if you are running in paranoid mode (prompting before each step)
|
446
|
+
keep_panes: false, # A boolean indicating whether panes should be kept open after completion
|
446
447
|
start_at: 0, # A string representing the step where nodes should start being processed
|
447
448
|
toolbox: Runbook::Toolbox.new, # A collection of methods to invoke side-effects such as printing and collecting input
|
448
449
|
layout_panes: {}, # A map of pane names to pane ids. `layout_panes` is used by the `tmux_command` to identify which tmux pane to send the command to
|
@@ -1208,7 +1209,7 @@ When defining and referencing your own functions in a runbook, functions should
|
|
1208
1209
|
|
1209
1210
|
```ruby
|
1210
1211
|
module Adder
|
1211
|
-
def add(x, y)
|
1212
|
+
def self.add(x, y)
|
1212
1213
|
x + y
|
1213
1214
|
end
|
1214
1215
|
end
|
data/lib/runbook.rb
CHANGED
data/lib/runbook/cli.rb
CHANGED
@@ -82,17 +82,6 @@ module Runbook
|
|
82
82
|
invoke(Runbook::Initializer)
|
83
83
|
end
|
84
84
|
|
85
|
-
desc "install", "Install Runbook in an existing project", hide: true
|
86
|
-
Runbook::Initializer.class_options.values.each do |co|
|
87
|
-
method_option co.name, desc: co.description, required: co.required,
|
88
|
-
default: co.default, aliases: co.aliases, type: co.type,
|
89
|
-
banner: co.banner, hide: co.hide
|
90
|
-
end
|
91
|
-
def install
|
92
|
-
Runbook.deprecator.deprecation_warning(:install, :init)
|
93
|
-
invoke(Runbook::Initializer)
|
94
|
-
end
|
95
|
-
|
96
85
|
desc "--version", "Print runbook's version"
|
97
86
|
def __print_version
|
98
87
|
puts "Runbook v#{Runbook::VERSION}"
|
data/lib/runbook/entity.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Runbook::Extensions
|
2
2
|
module Statements
|
3
3
|
module DSL
|
4
|
-
def method_missing(name, *args, &block)
|
4
|
+
ruby2_keywords def method_missing(name, *args, &block)
|
5
5
|
if (klass = Statements::DSL._statement_class(name))
|
6
6
|
klass.new(*args, &block).tap do |statement|
|
7
7
|
parent.add(statement)
|
@@ -22,15 +22,20 @@ module Runbook::Generators
|
|
22
22
|
desc: "Target directory for shared runbook code"
|
23
23
|
class_option :test, type: :string, enum: ["rspec", "minitest"],
|
24
24
|
default: "rspec", desc: %Q{Test-suite, "rspec" or "minitest"}
|
25
|
+
class_option :ci, type: :string, enum: ["github", "travis", "gitlab", "circle"],
|
26
|
+
default: "github", desc: %Q{CI Service, "github", "travis", "gitlab", or "circle"}
|
25
27
|
|
26
28
|
def init_gem
|
27
29
|
bundle_exists = "which bundle 2>&1 1>/dev/null"
|
28
30
|
raise "Please ensure bundle is installed" unless system(bundle_exists)
|
31
|
+
bundler_version = Gem::Version.new(Bundler::VERSION)
|
29
32
|
|
30
33
|
inside(parent_options[:root]) do
|
31
34
|
test = "--test #{options[:test]}"
|
35
|
+
ci = "--ci #{options[:ci]}"
|
36
|
+
changelog = "--no-changelog" if bundler_version >= Gem::Version.new("2.2.8")
|
32
37
|
continue = (
|
33
|
-
run("bundle gem #{_name} #{test} --no-coc --no-mit") ||
|
38
|
+
run("bundle gem #{_name} #{test} #{ci} --rubocop #{changelog} --no-coc --no-mit") ||
|
34
39
|
options[:pretend]
|
35
40
|
)
|
36
41
|
exit 1 unless continue
|
@@ -53,6 +58,9 @@ module Runbook::Generators
|
|
53
58
|
remove_file(readme)
|
54
59
|
|
55
60
|
gemfile = File.join(*dirs, "Gemfile")
|
61
|
+
if File.exist?(gemfile)
|
62
|
+
@gemfile_file_contents = File.readlines(gemfile)
|
63
|
+
end
|
56
64
|
remove_file(gemfile)
|
57
65
|
|
58
66
|
base_file = File.join(*dirs, "lib", "#{_name}.rb")
|
@@ -102,14 +110,25 @@ module Runbook::Generators
|
|
102
110
|
template("templates/Gemfile.tt", target)
|
103
111
|
|
104
112
|
# Add development dependencies from gemspec
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
+
if @gemspec_file_contents
|
114
|
+
gems = @gemspec_file_contents.select do |line|
|
115
|
+
line =~ / spec.add_development_dependency/
|
116
|
+
end.map do |line|
|
117
|
+
line.gsub(/ spec.add_development_dependency/, "gem")
|
118
|
+
end.join
|
119
|
+
|
120
|
+
append_to_file(target, "\n#{gems}", verbose: false)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Add gemfile gems
|
124
|
+
if @gemfile_file_contents
|
125
|
+
gems = @gemfile_file_contents.select do |line|
|
126
|
+
line =~ /^gem /
|
127
|
+
end.join
|
128
|
+
|
129
|
+
append_to_file(target, "\n#{gems}", verbose: false)
|
130
|
+
end
|
131
|
+
|
113
132
|
end
|
114
133
|
|
115
134
|
def create_base_file
|
data/lib/runbook/run.rb
CHANGED
@@ -258,7 +258,7 @@ module Runbook
|
|
258
258
|
:after,
|
259
259
|
Runbook::Entities::Book,
|
260
260
|
) do |object, metadata|
|
261
|
-
next if metadata[:noop] || metadata[:layout_panes].none?
|
261
|
+
next if metadata[:noop] || metadata[:layout_panes].none? || metadata[:keep_panes]
|
262
262
|
if metadata[:auto]
|
263
263
|
metadata[:toolbox].output("Killing all opened tmux panes...")
|
264
264
|
kill_all_panes(metadata[:layout_panes])
|
data/lib/runbook/runner.rb
CHANGED
@@ -11,6 +11,7 @@ module Runbook
|
|
11
11
|
noop: false,
|
12
12
|
auto: false,
|
13
13
|
paranoid: true,
|
14
|
+
keep_panes: false,
|
14
15
|
start_at: "0"
|
15
16
|
)
|
16
17
|
run = "Runbook::Runs::#{run.to_s.camelize}".constantize
|
@@ -21,6 +22,7 @@ module Runbook
|
|
21
22
|
paranoid: Util::Glue.new(paranoid),
|
22
23
|
start_at: Util::Glue.new(start_at || "0"),
|
23
24
|
toolbox: Util::Glue.new(toolbox),
|
25
|
+
keep_panes: keep_panes,
|
24
26
|
book_title: book.title,
|
25
27
|
}).
|
26
28
|
merge(Runbook::Entities::Book.initial_run_metadata).
|
data/lib/runbook/version.rb
CHANGED
data/runbook.gemspec
CHANGED
@@ -32,7 +32,8 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.require_paths = ["lib"]
|
33
33
|
|
34
34
|
spec.add_runtime_dependency "activesupport", ">= 5.0.1.x", "< 7.0"
|
35
|
-
spec.add_runtime_dependency "method_source", "~> 0
|
35
|
+
spec.add_runtime_dependency "method_source", "~> 1.0"
|
36
|
+
spec.add_runtime_dependency "ruby2_keywords", "~> 0.0.4"
|
36
37
|
spec.add_runtime_dependency "sshkit", "1.21.0"
|
37
38
|
spec.add_runtime_dependency "sshkit-sudo", "~> 0.1"
|
38
39
|
spec.add_runtime_dependency "airbrussh", "~> 1.4"
|
@@ -42,10 +43,10 @@ Gem::Specification.new do |spec|
|
|
42
43
|
|
43
44
|
spec.add_development_dependency "appraisal", "~> 2.2"
|
44
45
|
spec.add_development_dependency "aruba", "~> 0.14"
|
45
|
-
spec.add_development_dependency "bundler", "~>
|
46
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
46
47
|
spec.add_development_dependency "bcrypt_pbkdf", ">= 1.0", "< 2.0"
|
47
48
|
spec.add_development_dependency "ed25519", ">= 1.2", "< 2.0"
|
48
|
-
spec.add_development_dependency "pry", "~> 0.
|
49
|
+
spec.add_development_dependency "pry", "~> 0.13"
|
49
50
|
spec.add_development_dependency "pry-byebug", "~> 3.6"
|
50
51
|
spec.add_development_dependency "rake", "~> 12.3"
|
51
52
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pblesi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -36,14 +36,28 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0
|
39
|
+
version: '1.0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0
|
46
|
+
version: '1.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: ruby2_keywords
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.0.4
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.0.4
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
name: sshkit
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,14 +176,14 @@ dependencies:
|
|
162
176
|
requirements:
|
163
177
|
- - "~>"
|
164
178
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
179
|
+
version: '2.2'
|
166
180
|
type: :development
|
167
181
|
prerelease: false
|
168
182
|
version_requirements: !ruby/object:Gem::Requirement
|
169
183
|
requirements:
|
170
184
|
- - "~>"
|
171
185
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
186
|
+
version: '2.2'
|
173
187
|
- !ruby/object:Gem::Dependency
|
174
188
|
name: bcrypt_pbkdf
|
175
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,14 +230,14 @@ dependencies:
|
|
216
230
|
requirements:
|
217
231
|
- - "~>"
|
218
232
|
- !ruby/object:Gem::Version
|
219
|
-
version: '0.
|
233
|
+
version: '0.13'
|
220
234
|
type: :development
|
221
235
|
prerelease: false
|
222
236
|
version_requirements: !ruby/object:Gem::Requirement
|
223
237
|
requirements:
|
224
238
|
- - "~>"
|
225
239
|
- !ruby/object:Gem::Version
|
226
|
-
version: '0.
|
240
|
+
version: '0.13'
|
227
241
|
- !ruby/object:Gem::Dependency
|
228
242
|
name: pry-byebug
|
229
243
|
requirement: !ruby/object:Gem::Requirement
|
@@ -398,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
398
412
|
- !ruby/object:Gem::Version
|
399
413
|
version: '0'
|
400
414
|
requirements: []
|
401
|
-
rubygems_version: 3.0.
|
415
|
+
rubygems_version: 3.0.8
|
402
416
|
signing_key:
|
403
417
|
specification_version: 4
|
404
418
|
summary: Write beautiful, executable runbooks for conducting system operations.
|