ssp 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,55 @@
1
+ require 'chef/config'
2
+ require 'chef/search/query'
3
+ require 'chef/node'
4
+
5
+ class SSP::App::Chef < Thor
6
+ namespace :chef
7
+
8
+ class_option :chef_config, :aliases => "-c",
9
+ :desc => "Location of the knife configuration file",
10
+ :default => File.join(ENV['HOME'], '.chef', 'knife.rb')
11
+
12
+
13
+ desc "client [NODES...]", "Runs chef-client on multiple nodes"
14
+ method_option :ssh_user, :aliases => "-u",
15
+ :desc => "The ssh username",
16
+ :default => "root"
17
+ method_option :ssh_password, :aliases => "-p",
18
+ :desc => "The ssh password"
19
+ def client(*nodes)
20
+ chef_config
21
+ command = options[:ssh_user] == "root" ? "chef-client" : "sudo chef-client"
22
+ ssh_run nodes.join(" "), command
23
+ end
24
+
25
+ private
26
+ def ssh_run(host, command, user = options[:ssh_user], pass = options[:ssh_password], manual = !host.index(':'))
27
+ ssh = ::Chef::Knife::Ssh.new
28
+ ssh.name_args = [ host, command ]
29
+ ssh.config[:ssh_user] = user
30
+ ssh.config[:password] = pass
31
+ ssh.config[:manual] = manual
32
+
33
+ begin
34
+ ssh.run
35
+ rescue Net::SSH::AuthenticationFailed
36
+ unless pass
37
+ puts "Failed to authenticate #{user} - trying password auth"
38
+ ssh = ::Chef::Knife::Ssh.new
39
+ ssh.name_args = [ host, command ]
40
+ ssh.config[:ssh_user] = user
41
+ ssh.config[:manual] = manual
42
+ ssh.config[:password] = ssh.get_password
43
+ ssh.run
44
+ end
45
+ end
46
+ end
47
+
48
+ def chef_config
49
+ unless defined?(@_chef_config_loaded)
50
+ ::Chef::Config.from_file(options[:chef_config])
51
+ @_chef_config_loaded = true
52
+ end
53
+ ::Chef::Config
54
+ end
55
+ end
@@ -44,8 +44,8 @@ echo "$IP #{fqdn} #{fqdn.split(".").first}" >> /etc/hosts
44
44
  EOH
45
45
  if chef_config[:chef_server_url] == "https://chef-server.rackspace"
46
46
  chef_server_ip = %x{dscl . read Hosts/chef-server.rackspace 2>/dev/null}[/[\d\.]+/]
47
- setup_node_script << %{echo "#{chef_server_ip} chef.secretsaucepartners.com" >> /etc/hosts\n}
48
- chef_config[:chef_server_url] = "https://chef.secretsaucepartners.com"
47
+ setup_node_script << %{echo "#{chef_server_ip} chef.sspti.me" >> /etc/hosts\n}
48
+ chef_config[:chef_server_url] = "https://chef.sspti.me"
49
49
  end
50
50
  setup_node_script << "exit 0\n"
51
51
 
@@ -101,7 +101,7 @@ validation_client_name "#{chef_config[:validation_client_name]}"
101
101
 
102
102
  say "\nBootstrapping #{shell.set_color(server.name, :bold)}..."
103
103
 
104
- ssh = Chef::Knife::Ssh.new
104
+ ssh = ::Chef::Knife::Ssh.new
105
105
  ssh.name_args = [ server.addresses["public"][0], "/bin/bash /etc/setup-node && /usr/local/bin/chef-client -j /etc/chef/first-boot.json" ]
106
106
  ssh.config[:ssh_user] = "root"
107
107
  ssh.config[:manual] = true
@@ -133,9 +133,9 @@ validation_client_name "#{chef_config[:validation_client_name]}"
133
133
 
134
134
  def chef_config
135
135
  unless defined?(@_chef_config_loaded)
136
- Chef::Config.from_file(options[:chef_config])
136
+ ::Chef::Config.from_file(options[:chef_config])
137
137
  @_chef_config_loaded = true
138
138
  end
139
- Chef::Config
139
+ ::Chef::Config
140
140
  end
141
141
  end
@@ -73,7 +73,7 @@ cat <<'EOP'
73
73
  127.0.0.1 localhost localhost.localdomain
74
74
  #{ip} #{fqdn} #{fqdn.split(".").first}
75
75
 
76
- 192.168.1.82 basil basil.secretsaucepartners.com chef.secretsaucepartners.com
76
+ 192.168.1.82 basil basil.sspti.me chef.sspti.me
77
77
  EOP
78
78
  ) > /etc/hosts
79
79
 
@@ -131,6 +131,7 @@ EOH
131
131
  command = <<EOH
132
132
  bash -c '
133
133
  xm shutdown #{hostname}
134
+ umount /mnt/#{hostname}
134
135
  sleep 3
135
136
  rm /etc/xen/#{hostname}.cfg
136
137
  lvremove -f vg/#{hostname}-{root,swap}'
@@ -145,14 +146,14 @@ EOH
145
146
  protected
146
147
  def chef_config
147
148
  unless defined?(@_chef_config_loaded)
148
- Chef::Config.from_file(options[:chef_config])
149
+ ::Chef::Config.from_file(options[:chef_config])
149
150
  @_chef_config_loaded = true
150
151
  end
151
- Chef::Config
152
+ ::Chef::Config
152
153
  end
153
154
 
154
155
  def ssh_run(host, command, user = options[:ssh_user], pass = options[:ssh_password])
155
- ssh = Chef::Knife::Ssh.new
156
+ ssh = ::Chef::Knife::Ssh.new
156
157
  ssh.name_args = [ host, command ]
157
158
  ssh.config[:ssh_user] = user
158
159
  ssh.config[:password] = pass
@@ -161,9 +162,9 @@ EOH
161
162
  begin
162
163
  ssh.run
163
164
  rescue Net::SSH::AuthenticationFailed
164
- unless config[:ssh_password]
165
- puts "Failed to authenticate #{config[:ssh_user]} - trying password auth"
166
- ssh = Chef::Knife::Ssh.new
165
+ unless pass
166
+ puts "Failed to authenticate #{user} - trying password auth"
167
+ ssh = ::Chef::Knife::Ssh.new
167
168
  ssh.name_args = [ host, command ]
168
169
  ssh.config[:ssh_user] = user
169
170
  ssh.config[:manual] = true
@@ -1,3 +1,3 @@
1
1
  module SSP
2
- VERSION = "0.2"
2
+ VERSION = "0.3"
3
3
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- version: "0.2"
8
+ - 3
9
+ version: "0.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - !binary |
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-07-05 00:00:00 +02:00
19
+ date: 2010-07-08 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -63,6 +63,7 @@ files:
63
63
  - bin/ssp
64
64
  - lib/ssp/app.rb
65
65
  - lib/ssp/application/bags.rb
66
+ - lib/ssp/application/chef.rb
66
67
  - lib/ssp/application/node.rb
67
68
  - lib/ssp/application/office_node.rb
68
69
  - lib/ssp/application/pair.rb