bourdain 1.4.1 → 1.5.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/VERSION +1 -1
- data/lib/bourdain/resources/checks.rb +1 -2
- data/lib/bourdain/resources/checks/cookbooks.rb +31 -43
- metadata +2 -3
- data/lib/bourdain/resources/checks/ssh_config.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 270fbf9547b48a86f75570212bb2dbb2a11a511e
|
4
|
+
data.tar.gz: 86e522eb39acb28252859376f21389cfe1a8c90c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69dc72f2ddac33c5b5c03ff74ed8336af507351a9c73219bb54a413911b8e8cba50b01497bd6eb6f78a26faf23213bfd77136fc327916c360df33c8699eb2f8a
|
7
|
+
data.tar.gz: 847d50b46fa0625684c711403fb099463723475884bae78ad0d18c015fc08cb7cab629c77101be59a9724b61ff52668596b83d58b72ae676ad911d16fda6d9f5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.5.0
|
@@ -11,6 +11,7 @@ module Bourdain
|
|
11
11
|
def initialize cookbook_config
|
12
12
|
super []
|
13
13
|
return unless require_chef!
|
14
|
+
log.info 'Checking cookbooks, this may take a while...'
|
14
15
|
check_gitlab_cookbooks! cookbook_config
|
15
16
|
check_local_cookbooks! cookbook_config
|
16
17
|
end
|
@@ -18,64 +19,51 @@ module Bourdain
|
|
18
19
|
|
19
20
|
|
20
21
|
private
|
21
|
-
def
|
22
|
+
def check_cookbook cookbook
|
22
23
|
notifications = []
|
23
24
|
path = cookbook[:path]
|
24
25
|
stale = []
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
elsif youre_ahead? path
|
30
|
-
notifications.push [ path, :warn, "Your cookbook %{path} is ahead of %{repo}." % cookbook ]
|
31
|
-
elsif youre_behind? path
|
32
|
-
notifications.push [ path, :warn, "Looks like your cookbook %{path} is behind %{repo}. Will try pulling for you in a moment..." % cookbook ]
|
33
|
-
stale.push path
|
34
|
-
else
|
35
|
-
notifications.push [ path, :info, "Your cookbook %{path} looks up-to-date." % cookbook ]
|
36
|
-
end
|
27
|
+
unless Dir.exists? path
|
28
|
+
ensure_cookbook_exists cookbook
|
29
|
+
return
|
37
30
|
end
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
log.warn "
|
46
|
-
|
47
|
-
|
32
|
+
log.info "Fetching latest work on %{path} from %{repo}..." % cookbook
|
33
|
+
Dir.chdir(path) { %x| git fetch | }
|
34
|
+
|
35
|
+
if youre_dirty? path
|
36
|
+
log.warn "Your cookbook %{path} is dirty." % cookbook
|
37
|
+
elsif youre_ahead? path
|
38
|
+
log.warn "Your cookbook %{path} is ahead of %{repo}." % cookbook
|
39
|
+
elsif youre_behind? path
|
40
|
+
ensure_cookbook_up_to_date cookbook
|
41
|
+
else
|
42
|
+
log.info "Your cookbook %{path} looks up-to-date." % cookbook
|
48
43
|
end
|
49
44
|
end
|
50
45
|
|
51
|
-
def log_notifications notifications
|
52
|
-
ns = notifications.map { |n| n.first rescue nil }.compact.select { |n| !n.empty? }
|
53
|
-
ns.sort_by(&:first).each do |n|
|
54
|
-
next if n.empty?
|
55
|
-
_, severity, message = n
|
56
|
-
log.send severity, message
|
57
|
-
end
|
58
|
-
end
|
59
46
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
47
|
+
def ensure_cookbook_exists cookbook
|
48
|
+
return if Dir.exists? cookbook[:path]
|
49
|
+
log.warn "Populating cookbook %{path} with %{repo}..." % cookbook
|
50
|
+
%x| git clone git@#{GITLAB_HOST}:#{cookbook[:repo]} #{cookbook[:path]} |
|
51
|
+
log.info "Your cookbook %{path} is now up-to-date." % cookbook
|
64
52
|
end
|
65
53
|
|
66
54
|
|
55
|
+
def ensure_cookbook_up_to_date cookbook
|
56
|
+
return unless Dir.exists? cookbook[:path]
|
57
|
+
log.warn "Pulling in changes to %{path} from %{repo}..." % cookbook
|
58
|
+
Dir.chdir(cookbook[:path]) { %x| git pull | }
|
59
|
+
log.info "Your cookbook %{path} is now up-to-date." % cookbook
|
60
|
+
end
|
67
61
|
|
68
|
-
def check_gitlab_cookbooks! cookbook_configs
|
69
|
-
stale_cookbooks = cookbook_configs.pmap do |cookbook|
|
70
|
-
check_cookbook_freshness cookbook
|
71
|
-
end.flatten.compact
|
72
62
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
cookbook_configs.sort_by { |cc| cc[:path] }.each do |cookbook|
|
78
|
-
check_cookbook_exists cookbook
|
63
|
+
def check_gitlab_cookbooks! cookbook_configs
|
64
|
+
cookbook_configs.sort_by! { |cc| cc[:path] }
|
65
|
+
cookbook_configs.each do |cookbook|
|
66
|
+
check_cookbook cookbook
|
79
67
|
end
|
80
68
|
end
|
81
69
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bourdain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Clemmer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pmap
|
@@ -114,7 +114,6 @@ files:
|
|
114
114
|
- lib/bourdain/resources/checks/bourdain.rb
|
115
115
|
- lib/bourdain/resources/checks/chef.rb
|
116
116
|
- lib/bourdain/resources/checks/cookbooks.rb
|
117
|
-
- lib/bourdain/resources/checks/ssh_config.rb
|
118
117
|
- lib/bourdain/resources/commands.rb
|
119
118
|
- lib/bourdain/resources/commands/bump.rb
|
120
119
|
- lib/bourdain/resources/commands/check.rb
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module Bourdain
|
4
|
-
module Checks
|
5
|
-
|
6
|
-
class SSHConfigCheck < Check
|
7
|
-
usage :check, <<-END
|
8
|
-
Ensure all nodes are enterened into the local SSH config
|
9
|
-
ssh_config
|
10
|
-
END
|
11
|
-
|
12
|
-
|
13
|
-
def initialize cookbook_config
|
14
|
-
super []
|
15
|
-
return unless require_chef!
|
16
|
-
check_ssh_config!
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
private
|
22
|
-
def check_ssh_config! ssh_config=File.join(ENV['HOME'], '.ssh', 'config')
|
23
|
-
unless File::exist?(ssh_config)
|
24
|
-
log.warn 'Skipping SSH config check. File does not exist: %s' % ssh_config.inspect
|
25
|
-
return
|
26
|
-
end
|
27
|
-
|
28
|
-
nodes = Dir[File.join('nodes', '*.json')]
|
29
|
-
nodes = nodes.map do |path|
|
30
|
-
JSON::parse File.read(path)
|
31
|
-
end
|
32
|
-
|
33
|
-
config = File.read(ssh_config)
|
34
|
-
|
35
|
-
hosts = []
|
36
|
-
config.lines.select do |l|
|
37
|
-
l =~ /Host (\S+)/
|
38
|
-
hosts << $1 if $1
|
39
|
-
end
|
40
|
-
|
41
|
-
unconfigured_nodes = nodes.select do |n|
|
42
|
-
!hosts.include? n['name']
|
43
|
-
end
|
44
|
-
|
45
|
-
File.open(ssh_config, 'a') do |f|
|
46
|
-
f.puts unless unconfigured_nodes.empty?
|
47
|
-
unconfigured_nodes.each do |n|
|
48
|
-
log.info 'Adding %s to %s' % [ n['name'].inspect, ssh_config ]
|
49
|
-
f.puts "Host %s" % n['name']
|
50
|
-
f.puts "\tHostName\t%s" % n['name']
|
51
|
-
f.puts "\tPort\t22"
|
52
|
-
f.puts "\tUser\tvagrant"
|
53
|
-
f.puts "\tStrictHostKeyChecking\tno"
|
54
|
-
f.puts "\tIdentityFile\t~/.vagrant.d/insecure_private_key"
|
55
|
-
f.puts
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|