knife-solo 0.0.7 → 0.0.8

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.
@@ -16,11 +16,16 @@ class Chef
16
16
 
17
17
  banner "knife cook [user@]hostname [json] (options)"
18
18
 
19
+ option :skip_chef_check,
20
+ :long => '--skip-chef-check',
21
+ :boolean => true,
22
+ :description => "Skip the version check on the Chef gem"
23
+
19
24
  def run
20
25
  super
21
26
  check_syntax
22
27
  Chef::Config.from_file('solo.rb')
23
- check_chef_version
28
+ check_chef_version unless config[:skip_chef_check]
24
29
  rsync_kitchen
25
30
  add_patches
26
31
  cook
@@ -10,11 +10,10 @@ class Chef
10
10
  def run
11
11
  name = @name_args.first
12
12
  mkdir name
13
- mkdir name + "/nodes"
14
- mkdir name + "/roles"
15
- mkdir name + "/data_bags"
16
- mkdir name + "/site-cookbooks"
17
- mkdir name + "/cookbooks"
13
+ %w(nodes roles data_bags site-cookbooks cookbooks).each do |dir|
14
+ mkdir name + "/#{dir}"
15
+ touch name + "/#{dir}/.gitkeep"
16
+ end
18
17
  File.open(name + "/solo.rb", 'w') do |f|
19
18
  f << <<-RUBY.gsub(/^ {12}/, '')
20
19
  file_cache_path "/tmp/chef-solo"
@@ -28,23 +28,29 @@ module KnifeSolo::Bootstraps
28
28
  run_command("sudo USE='-test' ACCEPT_KEYWORDS='~amd64' emerge -u chef")
29
29
  end
30
30
 
31
- def add_yum_repos
31
+ def add_yum_repos(repo_path)
32
32
  repo_url = "http://rbel.co/"
33
- if distro[:version] == "RHEL5"
34
- repo_path = "/rbel5"
35
- else
36
- repo_path = "/rbel6"
37
- end
33
+
34
+ tmp_file = "/tmp/rbel"
38
35
  installed = "is already installed"
39
- result = run_command("sudo rpm -Uvh #{repo_url}#{repo_path}")
36
+ run_command("sudo yum -y install curl")
37
+ run_command("curl #{repo_url}#{repo_path} -o #{tmp_file}")
38
+ result = run_command("sudo rpm -Uvh #{tmp_file} && rm #{tmp_file}")
40
39
  raise result.stderr_or_stdout unless result.success? || result.stdout.match(installed)
41
40
  end
42
41
 
43
42
  def yum_install
44
43
  ui.msg("Installing required packages...")
45
- add_yum_repos
44
+
45
+ if distro[:version] == "RHEL5"
46
+ repo_path = "rbel5"
47
+ else
48
+ repo_path = "rbel6"
49
+ end
50
+
51
+ add_yum_repos(repo_path)
46
52
  @packages = %w(rubygem-chef rsync)
47
- run_command("sudo yum -y install #{package_list}")
53
+ run_command("sudo yum -y --disablerepo=* --enablerepo=#{repo_path} install #{package_list}")
48
54
  end
49
55
 
50
56
  def debian_gem_install
@@ -1,5 +1,5 @@
1
1
  module KnifeSolo
2
2
  def self.version
3
- '0.0.7'
3
+ '0.0.8'
4
4
  end
5
5
  end
@@ -6,8 +6,16 @@ module KnifeSolo
6
6
  end
7
7
  end
8
8
 
9
- def required_files
10
- %w(nodes roles cookbooks data_bags solo.rb)
9
+ def self.required_directories
10
+ %w(nodes roles cookbooks data_bags site-cookbooks)
11
+ end
12
+
13
+ def self.required_files
14
+ %w(solo.rb)
15
+ end
16
+
17
+ def self.all_requirements
18
+ required_files + required_directories
11
19
  end
12
20
 
13
21
  def run
@@ -15,7 +23,7 @@ module KnifeSolo
15
23
  end
16
24
 
17
25
  def required_files_present?
18
- required_files.inject(true) { |m, f| m && File.exists?(f) }
26
+ KitchenCommand.all_requirements.inject(true) { |m, f| m && File.exists?(f) }
19
27
  end
20
28
  end
21
29
  end
@@ -27,6 +27,11 @@ module KnifeSolo
27
27
  :short => "-p FILE",
28
28
  :long => "--ssh-port FILE",
29
29
  :description => "The ssh port"
30
+
31
+ option :startup_script,
32
+ :short => "-s FILE",
33
+ :long => "--startup-script FILE",
34
+ :description => "The startup script on the remote server containing variable definitions"
30
35
  end
31
36
  end
32
37
 
@@ -105,6 +110,10 @@ module KnifeSolo
105
110
  [host_arg, config_arg, ident_arg, port_arg].compact.join(' ')
106
111
  end
107
112
 
113
+ def startup_script
114
+ config[:startup_script]
115
+ end
116
+
108
117
  class ExecResult
109
118
  attr_accessor :stdout, :stderr, :exit_code
110
119
 
@@ -141,19 +150,32 @@ module KnifeSolo
141
150
  command.sub(/^\s*sudo/, replacement)
142
151
  end
143
152
 
153
+ def process_startup_file(command)
154
+ command.insert(0, "source #{startup_script} && ")
155
+ end
156
+
144
157
  def stream_command(command)
145
158
  run_command(command, :streaming => true)
146
159
  end
147
160
 
161
+ def processed_command(command, options = {})
162
+ command = process_sudo(command) if options[:process_sudo]
163
+ command = process_startup_file(command) if startup_script
164
+ command
165
+ end
166
+
148
167
  def run_command(command, options={})
149
168
  defaults = {:process_sudo => true}
150
169
  options = defaults.merge(options)
151
170
 
152
171
  detect_authentication_method
153
172
 
154
- Chef::Log.debug("Running command #{command}")
173
+ Chef::Log.debug("Initial command #{command}")
155
174
  result = ExecResult.new
156
- command = process_sudo(command) if options[:process_sudo]
175
+
176
+ command = processed_command(command, options)
177
+ Chef::Log.debug("Running processed command #{command}")
178
+
157
179
  Net::SSH.start(host, user, connection_options) do |ssh|
158
180
  ssh.open_channel do |channel|
159
181
  channel.request_pty
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-solo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-09 00:00:00.000000000Z
12
+ date: 2012-02-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70125916232020 !ruby/object:Gem::Requirement
16
+ requirement: &70146380288440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70125916232020
24
+ version_requirements: *70146380288440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70125916231600 !ruby/object:Gem::Requirement
27
+ requirement: &70146380288020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70125916231600
35
+ version_requirements: *70146380288020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: virtualbox
38
- requirement: &70125916231180 !ruby/object:Gem::Requirement
38
+ requirement: &70146380287600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70125916231180
46
+ version_requirements: *70146380287600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: chef
49
- requirement: &70125916230640 !ruby/object:Gem::Requirement
49
+ requirement: &70146380287100 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.10.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70125916230640
57
+ version_requirements: *70146380287100
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: net-ssh
60
- requirement: &70125916230080 !ruby/object:Gem::Requirement
60
+ requirement: &70146380286600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 2.1.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70125916230080
68
+ version_requirements: *70146380286600
69
69
  description: Handles bootstrapping, running chef solo, rsyncing cookbooks etc
70
70
  email: mat@schaffer.me
71
71
  executables: []
@@ -104,8 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project: nowarning
107
- rubygems_version: 1.8.6
107
+ rubygems_version: 1.8.15
108
108
  signing_key:
109
109
  specification_version: 3
110
110
  summary: A collection of knife plugins for dealing with chef solo
111
111
  test_files: []
112
+ has_rdoc: