berkflow 0.6.3 → 0.7.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/CHANGELOG.md +8 -0
- data/README.md +2 -2
- data/lib/berkflow.rb +22 -3
- data/lib/berkflow/cli.rb +35 -2
- data/lib/berkflow/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24c520495a983a7e8d942ac01d9751077401f8a8
|
4
|
+
data.tar.gz: f8516a6f5e8b830d038da357cd48c6700c21d3c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d5decb374e5d427e12ec9017c245edfd3b36c665376f03f302c2e1ca4da17675dc82c59a04cd5067524e342af2fb5ac5deaa8cc2b93bf23aa4747d08ad8ce20
|
7
|
+
data.tar.gz: 0cc37c202e129473cd32bfeaeb63c1ec6655ed0a69d0fcfd5b78650f8d8e23484f0ac62d8c6ae739a697683317cf82b1424f3a578ee413ed4e2cee5d1dde5197
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -6,11 +6,11 @@ A command line tool for managing Chef Environments using Berkshelf and the [Envi
|
|
6
6
|
|
7
7
|
## Requirements
|
8
8
|
|
9
|
-
* [
|
9
|
+
* [Chef-DK](https://downloads.chef.io/chef-dk/) >= 0.2.0
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
13
|
-
Install the [Chef-DK](
|
13
|
+
Install the [Chef-DK](https://downloads.chef.io/chef-dk/) and add it, and it's gem binaries directory to your path
|
14
14
|
|
15
15
|
$ export PATH=/opt/chefdk/bin:$HOME/.chefdk/gem/ruby/2.1.0/bin:$PATH
|
16
16
|
|
data/lib/berkflow.rb
CHANGED
@@ -4,8 +4,27 @@ require 'ridley'
|
|
4
4
|
require 'ridley-connectors'
|
5
5
|
require 'berkshelf'
|
6
6
|
|
7
|
-
Celluloid.logger.level = ::Logger::ERROR
|
8
|
-
|
9
7
|
module Berkflow
|
10
|
-
|
8
|
+
class << self
|
9
|
+
def debug?
|
10
|
+
!ENV['DEBUG'].nil?
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
if debug?
|
15
|
+
Ridley.logger.level = Logger::DEBUG
|
16
|
+
Berkshelf.logger.level = Logger::DEBUG
|
17
|
+
else
|
18
|
+
# Disable Celluloid logging to silence erronous warnings and errors. This
|
19
|
+
# will be re-enabled in the future once the cause of false crash reports
|
20
|
+
# on shutdown is identified and fixed.
|
21
|
+
Celluloid.logger = nil
|
22
|
+
|
23
|
+
Ridley.logger.level = Logger::ERROR
|
24
|
+
Berkshelf.logger.level = Logger::ERROR
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
11
28
|
end
|
29
|
+
|
30
|
+
Berkflow.setup
|
data/lib/berkflow/cli.rb
CHANGED
@@ -145,6 +145,12 @@ module Berkflow
|
|
145
145
|
type: :boolean,
|
146
146
|
desc: "Execute with sudo",
|
147
147
|
default: false
|
148
|
+
method_option :connect_attribute,
|
149
|
+
aliases: "-a",
|
150
|
+
type: :string,
|
151
|
+
desc: "The attribute to use for opening the connection",
|
152
|
+
enum: ["ipv4", "hostname"],
|
153
|
+
default: "hostname"
|
148
154
|
desc "exec ENV CMD", "execute an arbitrary shell command on all nodes in an environment."
|
149
155
|
def exec(environment, command)
|
150
156
|
env = find_environment!(environment)
|
@@ -158,7 +164,9 @@ module Berkflow
|
|
158
164
|
end
|
159
165
|
|
160
166
|
say "Executing command on #{nodes.length} nodes..."
|
161
|
-
success, failures, out = handle_results nodes.pmap { |node|
|
167
|
+
success, failures, out = handle_results nodes.pmap { |node|
|
168
|
+
ridley.node.run connect_address(node, options), command
|
169
|
+
}
|
162
170
|
|
163
171
|
unless success.empty?
|
164
172
|
say "Successfully executed command on #{success.length} nodes"
|
@@ -172,6 +180,12 @@ module Berkflow
|
|
172
180
|
failures.empty? ? exit(0) : exit(1)
|
173
181
|
end
|
174
182
|
|
183
|
+
method_option :connect_attribute,
|
184
|
+
aliases: "-a",
|
185
|
+
type: :string,
|
186
|
+
desc: "The attribute to use for opening the connection",
|
187
|
+
enum: ["ipv4", "hostname"],
|
188
|
+
default: "hostname"
|
175
189
|
desc "run_chef ENV", "run chef on all nodes in the given environment."
|
176
190
|
def run_chef(environment)
|
177
191
|
env = find_environment!(environment)
|
@@ -185,7 +199,9 @@ module Berkflow
|
|
185
199
|
end
|
186
200
|
|
187
201
|
say "Running Chef Client on #{nodes.length} nodes..."
|
188
|
-
success, failures, out = handle_results nodes.pmap { |node|
|
202
|
+
success, failures, out = handle_results nodes.pmap { |node|
|
203
|
+
ridley.node.chef_run connect_address(node, options)
|
204
|
+
}
|
189
205
|
|
190
206
|
unless success.empty?
|
191
207
|
say "Successfully ran Chef Client on #{success.length} nodes"
|
@@ -209,6 +225,12 @@ module Berkflow
|
|
209
225
|
aliases: "-s",
|
210
226
|
desc: "Skip running chef-client on nodes in specified environment",
|
211
227
|
default: false
|
228
|
+
method_option :connect_attribute,
|
229
|
+
aliases: "-a",
|
230
|
+
type: :string,
|
231
|
+
desc: "The attribute to use for opening the connection",
|
232
|
+
enum: ["ipv4", "hostname"],
|
233
|
+
default: "hostname"
|
212
234
|
desc "upgrade ENV APP [VERSION]", "upgrade an environment to the specified cookbook version."
|
213
235
|
long_desc <<-EOH
|
214
236
|
Upgrades an environment to the specified cookbook version. If no version is given then the latest
|
@@ -269,6 +291,17 @@ module Berkflow
|
|
269
291
|
Berkshelf::Config.instance
|
270
292
|
end
|
271
293
|
|
294
|
+
def connect_address(node, options)
|
295
|
+
address = case options[:connect_attribute].downcase
|
296
|
+
when "ipv4"
|
297
|
+
node.public_ipv4
|
298
|
+
when "hostname"
|
299
|
+
node.public_hostname
|
300
|
+
else
|
301
|
+
node.public_hostname
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
272
305
|
def handle_results(result_set)
|
273
306
|
failure, success = result_set.partition { |result| result.error? }
|
274
307
|
log_dir = log_results(success, failure)
|
data/lib/berkflow/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Winsor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: semverse
|