solokit 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,4 @@
1
+ 0.0.7
2
+
3
+ Major speed improvment by reducing the number of ssh logins.
4
+
data/README.markdown CHANGED
@@ -12,7 +12,7 @@ Cookbooks and configuration
12
12
 
13
13
  Solokit includes some defaults so that you don't have to repeat the same things for each server. Any "cookbook" or "chef" directories in the root of your project will be copied over the defaults. The same goes for any "cookbook" or "chef" directories for a specific environment.
14
14
 
15
- An environment can be anything from one server to a staging cluster. Within an environment you can run specific configuration for each server, but Solokit defaults to "server.json".
15
+ An environment can be anything from one server to a complete cluster. Within an environment you can run specific configuration for each server, but Solokit defaults to "server.json".
16
16
 
17
17
  For each layer, Solokit looks for a directory structure like this:
18
18
 
@@ -61,7 +61,7 @@ Add user configuration to users.yml (optional, but you need to provide a chef/ro
61
61
  hash: $1$8jLGWmPB$yFGmUThzbL0DMarc1CIY1/
62
62
  keys: user@computer
63
63
 
64
- ## -- Shared users --
64
+ ## Shared users
65
65
  deploy:
66
66
  keys: group/developers
67
67
 
@@ -70,7 +70,7 @@ Add user configuration to users.yml (optional, but you need to provide a chef/ro
70
70
  users: group/developers deploy
71
71
  sudo: group/developers
72
72
 
73
- And keys below "public_keys" that have names ending in ".pub".
73
+ Add keys below "public_keys" that have names ending in ".pub".
74
74
 
75
75
  mkdir -p public_keys
76
76
  echo "your key" > public_keys/your_key@computer.pub
data/lib/chef.rb CHANGED
@@ -2,6 +2,8 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'ssh.rb'))
2
2
 
3
3
  module Solokit
4
4
  class Chef
5
+ TEMP_PATH="/tmp/solokit_upload"
6
+
5
7
  def initialize(ip, name, env, debug_ssh, user = 'root')
6
8
  @ip, @name, @env = ip, name, env
7
9
  @ssh = SSH.new(ip, user, debug_ssh)
@@ -15,16 +17,17 @@ module Solokit
15
17
 
16
18
  def upload(root = "/")
17
19
  solokit_path = File.expand_path(File.join(File.dirname(__FILE__), '..'))
18
- @ssh.run("rm -rf #{root}var/chef-solo", false) &&
19
- @ssh.run("rm -rf #{root}etc/chef", false) &&
20
- upload_files("#{solokit_path}/cookbooks/upstream/*", "#{root}var/chef-solo/upstream-cookbooks") &&
21
- upload_files("#{solokit_path}/cookbooks/site/*", "#{root}var/chef-solo/site-cookbooks") &&
22
- upload_files("cookbooks/upstream/*", "#{root}var/chef-solo/upstream-cookbooks") &&
23
- upload_files("cookbooks/site/*", "#{root}var/chef-solo/site-cookbooks") &&
24
- upload_files("envs/#{@env}/cookbooks/*", "#{root}var/chef-solo/site-cookbooks") &&
25
- upload_files("#{solokit_path}/chef/*", "#{root}etc/chef") &&
26
- upload_files("chef/*", "#{root}etc/chef") &&
27
- upload_files("envs/#{@env}/chef/*", "#{root}etc/chef")
20
+
21
+ add_upload("#{solokit_path}/cookbooks/upstream/*", "#{root}var/chef-solo/upstream-cookbooks") &&
22
+ add_upload("#{solokit_path}/cookbooks/site/*", "#{root}var/chef-solo/site-cookbooks") &&
23
+ add_upload("cookbooks/upstream/*", "#{root}var/chef-solo/upstream-cookbooks") &&
24
+ add_upload("cookbooks/site/*", "#{root}var/chef-solo/site-cookbooks") &&
25
+ add_upload("envs/#{@env}/cookbooks/*", "#{root}var/chef-solo/site-cookbooks") &&
26
+ add_upload("#{solokit_path}/chef/*", "#{root}etc/chef") &&
27
+ add_upload("chef/*", "#{root}etc/chef") &&
28
+ add_upload("envs/#{@env}/chef/*", "#{root}etc/chef") &&
29
+ @ssh.run("rm -rf #{root}var/chef-solo #{root}etc/chef", false) &&
30
+ @ssh.rsync("#{TEMP_PATH}#{root}", root, true)
28
31
  end
29
32
 
30
33
  def run(debug = false, root = "/")
@@ -49,9 +52,12 @@ module Solokit
49
52
  "PATH=\"#{root}ruby/bin:/sbin:$PATH\""
50
53
  end
51
54
 
52
- def upload_files(from, to)
53
- return true unless File.exists?(from.gsub(/\*/, ''))
54
- @ssh.run("mkdir -p #{to}") && @ssh.rsync(from, to, true)
55
+ def add_upload(from, to)
56
+ if File.exists?(from.gsub(/\*/, ''))
57
+ system("mkdir -p #{TEMP_PATH}#{to} && cp -rf #{from} /tmp/solokit_upload#{to}")
58
+ else
59
+ true
60
+ end
55
61
  end
56
62
 
57
63
  def installed?
@@ -59,3 +65,4 @@ module Solokit
59
65
  end
60
66
  end
61
67
  end
68
+
@@ -1,3 +1,3 @@
1
1
  module Solokit
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solokit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 7
10
+ version: 0.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Joakim Kolsj\xC3\xB6"
@@ -60,6 +60,7 @@ extra_rdoc_files: []
60
60
  files:
61
61
  - .gitignore
62
62
  - .rvmrc
63
+ - CHANGELOG
63
64
  - Gemfile
64
65
  - Gemfile.lock
65
66
  - LICENCE