pauper 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/dhcpd.rb +4 -0
  2. data/lib/pauper.rb +25 -6
  3. metadata +18 -7
@@ -10,6 +10,10 @@ class DHCPD
10
10
  parse
11
11
  end
12
12
 
13
+ def subnet
14
+ @preamble.match(/(172\.16\.\d+)\.0/)[1]
15
+ end
16
+
13
17
  def save
14
18
  tmp_path = '.tmp.dhcpd.conf'
15
19
  File.open(tmp_path, 'w') do |f|
@@ -51,9 +51,11 @@ class Pauper
51
51
  vmx.save
52
52
 
53
53
  dhcpd = DHCPD.new(DHCPD_CONF_PATH)
54
+ ip = node_ip(node_config)
55
+
54
56
  dhcpd.config[node_name] = {
55
57
  'hardware ethernet' => mac,
56
- 'fixed-address' => node_config.config[:ip]
58
+ 'fixed-address' => ip
57
59
  }
58
60
  dhcpd.save
59
61
 
@@ -81,13 +83,13 @@ class Pauper
81
83
  chef_attribs = {
82
84
  :run_list => @pauper_config.config[:default_run_list] + node_config.config[:run_list],
83
85
  :ip => {
84
- :private => node_config.config[:ip],
86
+ :private => ip,
85
87
  :private_netmask => '255.255.255.0'
86
88
  }
87
89
  }.merge(@pauper_config.config[:chef_options]).merge(node_config.config[:chef_options])
88
90
 
89
91
  puts "Uploading Chef files..."
90
- Net::SCP.start node_config.config[:ip], @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |scp|
92
+ Net::SCP.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |scp|
91
93
  scp.upload! tmp_client_rb_path, "client.rb"
92
94
  scp.upload! @pauper_config.config[:validation_key_path], "validation.pem"
93
95
  scp.upload! StringIO.new(chef_attribs.to_json), "client-config.json"
@@ -102,7 +104,7 @@ class Pauper
102
104
  end
103
105
 
104
106
  puts "Connecting over SSH..."
105
- Net::SSH.start node_config.config[:ip], @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |ssh|
107
+ Net::SSH.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |ssh|
106
108
  ssh_exec ssh, "sudo hostname #{node_name}"
107
109
  ssh_exec ssh, "sudo mkdir /etc/chef"
108
110
 
@@ -166,7 +168,7 @@ class Pauper
166
168
  puts "Writing /etc/hosts file..."
167
169
  hosts = Hosts.new
168
170
  @pauper_config.config[:nodes].each do |node|
169
- hosts.config[node.config[:ip]] = node.name
171
+ hosts.config[node_ip(node)] = node.name
170
172
  end
171
173
  hosts.save
172
174
  end
@@ -194,6 +196,17 @@ class Pauper
194
196
 
195
197
  private
196
198
 
199
+ def node_ip(node_config)
200
+ return node_config.config[:ip] if node_config.config[:ip]
201
+
202
+ @subnet ||= begin
203
+ dhcpd = DHCPD.new(DHCPD_CONF_PATH)
204
+ dhcpd.subnet
205
+ end
206
+
207
+ return @subnet + '.' + node_config.config[:last_octet]
208
+ end
209
+
197
210
  def cmd(*args)
198
211
  puts ["local>", *args].join(" ")
199
212
  system *args
@@ -260,7 +273,9 @@ class Pauper
260
273
  end
261
274
 
262
275
  def node_name_to_vmx(node_name)
263
- Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')][0]
276
+ vmxes = Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')]
277
+ raise "Can't find a vmx file in #{node_name_to_vm_path(node_name)}" unless vmxes[0]
278
+ vmxes[0]
264
279
  end
265
280
 
266
281
  def node_name_to_vm_path(node_name)
@@ -369,6 +384,10 @@ class Pauper
369
384
  @config[:ip] = addr
370
385
  end
371
386
 
387
+ def last_octet(octet)
388
+ @config[:last_octet] = octet.to_s
389
+ end
390
+
372
391
  def chef_options(options)
373
392
  @config[:chef_options] = options
374
393
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pauper
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 21
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 4
9
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Tyler McMullen
@@ -14,16 +15,17 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-08-17 00:00:00 -07:00
18
- default_executable:
18
+ date: 2011-08-22 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: thor
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 3
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
@@ -33,9 +35,11 @@ dependencies:
33
35
  name: net-ssh
34
36
  prerelease: false
35
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
36
39
  requirements:
37
40
  - - ">="
38
41
  - !ruby/object:Gem::Version
42
+ hash: 3
39
43
  segments:
40
44
  - 0
41
45
  version: "0"
@@ -45,9 +49,11 @@ dependencies:
45
49
  name: net-scp
46
50
  prerelease: false
47
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
48
53
  requirements:
49
54
  - - ">="
50
55
  - !ruby/object:Gem::Version
56
+ hash: 3
51
57
  segments:
52
58
  - 0
53
59
  version: "0"
@@ -57,9 +63,11 @@ dependencies:
57
63
  name: json
58
64
  prerelease: false
59
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
60
67
  requirements:
61
68
  - - ">="
62
69
  - !ruby/object:Gem::Version
70
+ hash: 3
63
71
  segments:
64
72
  - 0
65
73
  version: "0"
@@ -82,7 +90,6 @@ files:
82
90
  - lib/pauper.rb
83
91
  - lib/vmx.rb
84
92
  - README
85
- has_rdoc: true
86
93
  homepage: http://github.com/fastly/Pauper
87
94
  licenses: []
88
95
 
@@ -92,23 +99,27 @@ rdoc_options: []
92
99
  require_paths:
93
100
  - lib
94
101
  required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
95
103
  requirements:
96
104
  - - ">="
97
105
  - !ruby/object:Gem::Version
106
+ hash: 3
98
107
  segments:
99
108
  - 0
100
109
  version: "0"
101
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
102
112
  requirements:
103
113
  - - ">="
104
114
  - !ruby/object:Gem::Version
115
+ hash: 3
105
116
  segments:
106
117
  - 0
107
118
  version: "0"
108
119
  requirements: []
109
120
 
110
121
  rubyforge_project:
111
- rubygems_version: 1.3.6
122
+ rubygems_version: 1.8.8
112
123
  signing_key:
113
124
  specification_version: 3
114
125
  summary: A semi-sane way to manage a multi-vm dev environment