chake 0.1.7 → 0.2
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/chake +25 -0
- data/lib/chake.rb +66 -24
- data/lib/chake/backend.rb +16 -1
- data/lib/chake/backend/ssh.rb +21 -1
- data/lib/chake/bootstrap/00_centos7.sh +81 -0
- data/lib/chake/bootstrap/00_debian.sh +7 -0
- data/lib/chake/bootstrap/99_unsupported.sh +11 -0
- data/lib/chake/node.rb +1 -1
- data/lib/chake/version.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dab95473935a70ac4191737d2f0e5fe7cb81cac
|
4
|
+
data.tar.gz: ab453a86e896472cb44d6f7cdc5ff5035d4925d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c4287d875ac6220db86d879ae7997392918b90fdd830b6d637f296a9901e5006d168a5d62e995def7fb8a5ea5fa6849b0fac13b194d76c011374858e0dc4c82
|
7
|
+
data.tar.gz: 9b4259782db5b68c8c3cb17671893d6bbc1f4d151af6f0345a8f4cb890e1cea07cfda342c6480294ddcefb06198e4dddbde86d34cef63b3480b462a9f44687c5
|
data/bin/chake
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
rakefiles = %w[rakefile Rakefile rakefile.rb Rakefile.rb]
|
6
|
+
|
7
|
+
if (!rakefiles.any? { |f| File.exist?(f) }) && !ARGV.include?('-f') && !ARGV.include?('--rakefile')
|
8
|
+
require 'tmpdir'
|
9
|
+
require 'fileutils'
|
10
|
+
|
11
|
+
# syntethize a Rakefile
|
12
|
+
tmpdir = Dir.mktmpdir
|
13
|
+
rakefile = File.join(tmpdir, 'Rakefile')
|
14
|
+
File.open(rakefile, 'w') do |f|
|
15
|
+
f.puts 'require "chake"'
|
16
|
+
end
|
17
|
+
ARGV.unshift << '--rakefile' << rakefile
|
18
|
+
|
19
|
+
# clenup after finishing
|
20
|
+
at_exit do
|
21
|
+
FileUtils.rm_rf tmpdir
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Rake.application.run
|
data/lib/chake.rb
CHANGED
@@ -14,7 +14,9 @@ $nodes = node_data.map { |node,data| Chake::Node.new(node, data) }.reject(&:skip
|
|
14
14
|
|
15
15
|
desc "Initializes current directory with sample structure"
|
16
16
|
task :init do
|
17
|
-
if
|
17
|
+
if File.exists?('nodes.yaml')
|
18
|
+
puts '[exists] nodes.yaml'
|
19
|
+
else
|
18
20
|
File.open('nodes.yaml', 'w') do |f|
|
19
21
|
sample_nodes = <<EOF
|
20
22
|
host1.my.tld:
|
@@ -22,27 +24,46 @@ host1.my.tld:
|
|
22
24
|
- recipe[myhost]
|
23
25
|
EOF
|
24
26
|
f.write(sample_nodes)
|
25
|
-
puts "
|
27
|
+
puts "[create] nodes.yaml"
|
26
28
|
end
|
27
29
|
end
|
28
|
-
if
|
30
|
+
if File.exists?('config.rb')
|
31
|
+
puts '[exists] config.rb'
|
32
|
+
else
|
29
33
|
File.open('config.rb', 'w') do |f|
|
30
34
|
f.puts "root = File.expand_path(File.dirname(__FILE__))"
|
31
35
|
f.puts "file_cache_path root + '/cache'"
|
32
36
|
f.puts "cookbook_path root + '/cookbooks'"
|
33
37
|
f.puts "role_path root + '/config/roles'"
|
34
38
|
end
|
35
|
-
puts "
|
39
|
+
puts "[create] config.rb"
|
40
|
+
end
|
41
|
+
|
42
|
+
if !File.exist?('config/roles')
|
43
|
+
FileUtils.mkdir_p 'config/roles'
|
44
|
+
puts '[ mkdir] config/roles'
|
45
|
+
end
|
46
|
+
if !File.exist?('cookbooks/myhost/recipes')
|
47
|
+
FileUtils.mkdir_p 'cookbooks/myhost/recipes/'
|
48
|
+
puts '[ mkdir] cookbooks/myhost/recipes/'
|
36
49
|
end
|
37
|
-
mkdir_p 'config/roles'
|
38
|
-
mkdir_p 'cookbooks/myhost/recipes/'
|
39
50
|
recipe = 'cookbooks/myhost/recipes/default.rb'
|
40
|
-
if
|
51
|
+
if File.exists?(recipe)
|
52
|
+
puts "[exists] #{recipe}"
|
53
|
+
else
|
41
54
|
File.open(recipe, 'w') do |f|
|
42
55
|
f.puts "package 'openssh-server'"
|
43
56
|
end
|
44
|
-
puts "
|
57
|
+
puts "[create] #{recipe}"
|
58
|
+
end
|
59
|
+
if File.exists?('Rakefile')
|
60
|
+
puts '[exists] Rakefile'
|
61
|
+
else
|
62
|
+
File.open('Rakefile', 'w') do |f|
|
63
|
+
f.puts 'require "chake"'
|
64
|
+
puts '[create] Rakefile'
|
45
65
|
end
|
66
|
+
end
|
46
67
|
end
|
47
68
|
|
48
69
|
desc 'list nodes'
|
@@ -73,31 +94,52 @@ def if_files_changed(node, group_name, files)
|
|
73
94
|
end
|
74
95
|
end
|
75
96
|
|
97
|
+
|
98
|
+
def write_json_file(file, data)
|
99
|
+
File.open(file, 'w') do |f|
|
100
|
+
f.write(JSON.dump(data))
|
101
|
+
f.write("\n")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
platforms = Dir.glob(File.expand_path('chake/bootstrap/*.sh', File.dirname(__FILE__))).sort
|
106
|
+
bootstrap_script = '.tmp/bootstrap'
|
107
|
+
|
76
108
|
$nodes.each do |node|
|
77
109
|
|
78
110
|
hostname = node.hostname
|
79
111
|
|
112
|
+
file bootstrap_script => platforms do |t|
|
113
|
+
mkdir_p(File.dirname(bootstrap_script))
|
114
|
+
File.open(t.name, 'w') do |f|
|
115
|
+
f.puts '#!/bin/sh'
|
116
|
+
f.puts 'set -eu'
|
117
|
+
platforms.each do |platform|
|
118
|
+
f.puts(File.read(platform))
|
119
|
+
end
|
120
|
+
end
|
121
|
+
chmod 0755, t.name
|
122
|
+
end
|
123
|
+
|
80
124
|
desc "bootstrap #{hostname}"
|
81
|
-
task "bootstrap:#{hostname}" do
|
125
|
+
task "bootstrap:#{hostname}" => bootstrap_script do
|
82
126
|
mkdir_p '.tmp', :verbose => false
|
83
127
|
config = '.tmp/' + hostname + '.json'
|
84
128
|
|
85
|
-
|
129
|
+
if File.exists?(config)
|
130
|
+
# already bootstrapped, just overwrite
|
131
|
+
write_json_file(config, node.data)
|
132
|
+
else
|
133
|
+
# copy bootstrap script over
|
134
|
+
scp = node.scp
|
135
|
+
target = "/tmp/.chake-bootstrap.#{Etc.getpwuid.name}"
|
136
|
+
sh *scp, bootstrap_script, node.scp_dest + target
|
86
137
|
|
87
|
-
|
88
|
-
|
89
|
-
json_data = node.data
|
90
|
-
f.write(JSON.dump(json_data))
|
91
|
-
f.write("\n")
|
92
|
-
end
|
138
|
+
# run bootstrap script
|
139
|
+
node.run_as_root(target)
|
93
140
|
|
94
|
-
|
95
|
-
|
96
|
-
node.run_as_root('apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -q -y install rsync chef && update-rc.d chef-client disable && service chef-client stop')
|
97
|
-
rescue
|
98
|
-
rm_f config
|
99
|
-
raise
|
100
|
-
end
|
141
|
+
# overwrite config with current contents
|
142
|
+
write_json_file(config, node.data)
|
101
143
|
end
|
102
144
|
|
103
145
|
end
|
@@ -107,7 +149,7 @@ $nodes.each do |node|
|
|
107
149
|
encrypted = encrypted_for(hostname)
|
108
150
|
rsync_excludes = (encrypted.values + encrypted.keys).map { |f| ["--exclude", f] }.flatten
|
109
151
|
|
110
|
-
rsync =
|
152
|
+
rsync = node.rsync + ["-avp", "--exclude", ".git/"]
|
111
153
|
rsync_logging = Rake.application.options.silent && '--quiet' || '--verbose'
|
112
154
|
|
113
155
|
files = Dir.glob("**/*").select { |f| !File.directory?(f) } - encrypted.keys - encrypted.values
|
data/lib/chake/backend.rb
CHANGED
@@ -2,6 +2,21 @@ module Chake
|
|
2
2
|
|
3
3
|
class Backend < Struct.new(:node)
|
4
4
|
|
5
|
+
class CommandFailed < Exception
|
6
|
+
end
|
7
|
+
|
8
|
+
def scp
|
9
|
+
['scp']
|
10
|
+
end
|
11
|
+
|
12
|
+
def scp_dest
|
13
|
+
''
|
14
|
+
end
|
15
|
+
|
16
|
+
def rsync
|
17
|
+
['rsync']
|
18
|
+
end
|
19
|
+
|
5
20
|
def rsync_dest
|
6
21
|
node.path + '/'
|
7
22
|
end
|
@@ -16,7 +31,7 @@ module Chake
|
|
16
31
|
if $?
|
17
32
|
status = $?.exitstatus
|
18
33
|
if status != 0
|
19
|
-
|
34
|
+
raise CommandFailed.new([node.hostname, 'FAILED with exit status %d' % status].join(': '))
|
20
35
|
end
|
21
36
|
end
|
22
37
|
end
|
data/lib/chake/backend/ssh.rb
CHANGED
@@ -4,16 +4,36 @@ module Chake
|
|
4
4
|
|
5
5
|
class Ssh < Backend
|
6
6
|
|
7
|
+
def scp
|
8
|
+
['scp', ssh_config].flatten.compact
|
9
|
+
end
|
10
|
+
|
11
|
+
def scp_dest
|
12
|
+
ssh_target + ':'
|
13
|
+
end
|
14
|
+
|
15
|
+
def rsync
|
16
|
+
['rsync', rsync_ssh].flatten.compact
|
17
|
+
end
|
18
|
+
|
7
19
|
def rsync_dest
|
8
20
|
[ssh_target, node.path + '/'].join(':')
|
9
21
|
end
|
10
22
|
|
11
23
|
def command_runner
|
12
|
-
['ssh', ssh_target]
|
24
|
+
['ssh', ssh_config, ssh_target].flatten.compact
|
13
25
|
end
|
14
26
|
|
15
27
|
private
|
16
28
|
|
29
|
+
def rsync_ssh
|
30
|
+
File.exist?('.ssh_config') && ['-e', 'ssh -F .ssh_config'] || []
|
31
|
+
end
|
32
|
+
|
33
|
+
def ssh_config
|
34
|
+
File.exist?('.ssh_config') && ['-F' '.ssh_config'] || []
|
35
|
+
end
|
36
|
+
|
17
37
|
def ssh_target
|
18
38
|
[node.username, node.hostname].compact.join('@')
|
19
39
|
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
if [ -f /etc/centos-release ] && grep -q 'CentOS Linux release 7' /etc/centos-release; then
|
2
|
+
cat > /etc/yum.repos.d/chef.key <<EOF
|
3
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
4
|
+
Version: GnuPG v1.4.11 (GNU/Linux)
|
5
|
+
|
6
|
+
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
|
64
|
+
sA==
|
65
|
+
=H60S
|
66
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
67
|
+
EOF
|
68
|
+
cat > /etc/yum.repos.d/chef.repo <<EOF
|
69
|
+
[chef_stable]
|
70
|
+
name=chef_stable
|
71
|
+
baseurl=https://packagecloud.io/chef/stable/el/7/\$basearch
|
72
|
+
repo_gpgcheck=1
|
73
|
+
gpgcheck=0
|
74
|
+
enabled=1
|
75
|
+
gpgkey=file:///etc/yum.repos.d/chef.key
|
76
|
+
sslverify=1
|
77
|
+
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
|
78
|
+
EOF
|
79
|
+
yum install -y chef rsync
|
80
|
+
exit
|
81
|
+
fi
|
data/lib/chake/node.rb
CHANGED
data/lib/chake/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antonio Terceiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -57,7 +57,8 @@ description: chake provides a set of rake tasks that you can use to manage any n
|
|
57
57
|
from where you can SSH into all your hosts.
|
58
58
|
email:
|
59
59
|
- terceiro@softwarelivre.org
|
60
|
-
executables:
|
60
|
+
executables:
|
61
|
+
- chake
|
61
62
|
extensions: []
|
62
63
|
extra_rdoc_files: []
|
63
64
|
files:
|
@@ -66,6 +67,7 @@ files:
|
|
66
67
|
- LICENSE.txt
|
67
68
|
- README.md
|
68
69
|
- Rakefile
|
70
|
+
- bin/chake
|
69
71
|
- chake.gemspec
|
70
72
|
- examples/test/Rakefile
|
71
73
|
- examples/test/config.rb
|
@@ -75,6 +77,9 @@ files:
|
|
75
77
|
- lib/chake/backend.rb
|
76
78
|
- lib/chake/backend/local.rb
|
77
79
|
- lib/chake/backend/ssh.rb
|
80
|
+
- lib/chake/bootstrap/00_centos7.sh
|
81
|
+
- lib/chake/bootstrap/00_debian.sh
|
82
|
+
- lib/chake/bootstrap/99_unsupported.sh
|
78
83
|
- lib/chake/node.rb
|
79
84
|
- lib/chake/version.rb
|
80
85
|
- spec/chake/backend/local_spec.rb
|