pauper 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f0dab255dae6b6196868eea8e2016270e5ea73f
4
- data.tar.gz: cfa3ea39f81b96138e5e9a88a74c0c68828ad0ff
3
+ metadata.gz: 589978903d478bbfdf3beb1be05ecfbb6fb70bf7
4
+ data.tar.gz: 8233aa486d0ec6198bbba31fadce7d548718b2eb
5
5
  SHA512:
6
- metadata.gz: 812e2334e9c6175ea488e9591d17d41ae5fc3878ab296ce460dab41569be2cbdbac973b001f16dc22a0e769cf155edf53b5c0fbbae059f6e10d36b08281e1e8e
7
- data.tar.gz: 381672d09740e94c5efe17e6eb3da403040aece3acc5456b6ea24e054711564f2c9f3699d70d5b7c4c83062ee478bf8eb08f5da423e3afc8f99ef59e15d98afb
6
+ metadata.gz: 1d7d522f39270b10f2d5485ba6a2553e4c9cb45984e8c689556964226957bd27a37cd4d876c0f4199ac543552e0cb3f3c8eb3703bbe1ba63633270ef36c3e414
7
+ data.tar.gz: 33e72c961f56f25bace2f933455dce6532dc73ecc32feb0172a9fce3400c5f2779d1890219721dee2298b1b66d36114cc1fb7b155d955d0525a29153ca8fb474
data/README.md CHANGED
@@ -77,6 +77,19 @@ haveged generates the needed entropy for you and should slove this issue. Feel
77
77
  free to `kill` haveged when you are done (it will run forever, hiding in the
78
78
  background if you do not :P )
79
79
 
80
+ Upgrading
81
+ -------------------------------------------------------------------------------
82
+ To update the Pauper gem from your local files:
83
+
84
+ ```
85
+ rake install
86
+ ```
87
+
88
+ To update the Pauper gem from RubyGems:
89
+
90
+ ```
91
+ gem update pauper
92
+ ```
80
93
 
81
94
  TIPS
82
95
  --------------------------------------------------------------------------------
@@ -89,6 +102,7 @@ If this script does not exist you may have to pull master or if you
89
102
  would prefer to do it the hard way...
90
103
 
91
104
  OSX users:
105
+
92
106
  1. SSH into your VM
93
107
  2. `cd` into your `pauper-env` directory
94
108
  3. `pauper stop`
@@ -100,3 +114,4 @@ OSX users:
100
114
  9. `pauper setup_osx`
101
115
 
102
116
  This will hopefully get you into a happy state... Hopefully...
117
+
data/bin/pauper CHANGED
@@ -1,38 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubygems'
4
3
  require 'thor'
5
4
  require 'pauper'
6
5
  require 'fusion'
7
6
 
8
- # Check for new versions on startup
9
-
7
+ # ignore the earlier opt-out-time flag
10
8
  SKIP_VERSION_CHECK_FLAG = '--skip-version-check'
11
- unless ARGV.include?(SKIP_VERSION_CHECK_FLAG)
12
- current_version = Gem.loaded_specs['pauper'].version
13
- latest_version = Gem.latest_version_for('pauper')
14
- if current_version < latest_version
15
- puts "It's your lucky day! There's a new version of Pauper available. You're on #{current_version}. Latest is #{latest_version}."
16
- puts "You can skip this check with the #{SKIP_VERSION_CHECK_FLAG} flag, if you really must."
17
- exit
18
- end
19
- end
20
9
  ARGV.delete(SKIP_VERSION_CHECK_FLAG)
21
10
 
22
11
  # Make sure PATH is what ubuntu expects it to be
23
12
  ENV['PATH']='/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin'
24
13
 
25
- require 'vmx'
26
-
27
14
  module Pauperism
28
15
  class Vm < Thor
29
- class_option :vmpath, :type => :string
30
- class_option :vmrunpath, :type => :string # TODO: implement
31
-
32
16
  no_commands do
33
- def fusion(vmpath=Fusion::DEFAULT_VMPATH)
34
- vmpath = File.expand_path(options[:vmpath]) if options[:vmpath]
35
- @fusion ||= Fusion.new(vmpath)
17
+ def pauper
18
+ return @pauper if @pauper
19
+ pauperfile = File.expand_path(options[:pauperfile]) if options[:pauperfile]
20
+ @pauper = Pauper.new(true, pauperfile)
21
+ end
22
+
23
+ def fusion
24
+ return @fusion if @fusion
25
+ @fusion = Fusion.new(pauper.config.config[:vm_path])
36
26
  end
37
27
  end
38
28
 
@@ -159,37 +149,22 @@ module Pauperism
159
149
  pauper.write_hosts
160
150
  end
161
151
 
162
- desc 'setup_osx [VMNAME]', 'Set up things for OS X'
163
- def setup_osx(vm_path=Fusion::DEFAULT_VMPATH)
152
+ desc 'setup_osx', 'Set up things for OS X'
153
+ def setup_osx
164
154
  unless Pauper.osx?
165
155
  puts 'Not OSX! I refuse!'
166
156
  exit
167
157
  end
168
158
  pauper(true)
169
159
 
170
- vmx_file = Fusion.new(vm_path).vmx
171
- vmx = VMX.new(vmx_file)
172
-
173
- mac = vmx.data['ethernet0.generatedAddress']
174
- arpmac = mac.gsub(/0([0-9a-fA-F])/, '\1') # switch it to the format that arp likes
175
-
176
- match = `arp -a | grep -i #{arpmac}`.match(/\(([0-9.]+)\)/)
177
- unless match
178
- puts "Could not find any running VM with MAC addr: #{arpmac}"
179
- puts " >> Manually SSH into the VM then try again <<"
180
- exit
181
- end
182
-
183
- ip = match.captures[0]
184
-
185
160
  # Set up DHCPD
186
- pauper.setup_osx_dhcpd(mac, ip)
161
+ pauper.setup_osx_dhcpd(fusion.mac, fusion.ip)
187
162
 
188
163
  # Set up route
189
- pauper.setup_osx_routes(ip)
164
+ pauper.setup_osx_routes(fusion.ip)
190
165
 
191
166
  # Write hosts
192
- pauper.write_osx_hosts(ip)
167
+ pauper.write_osx_hosts(fusion.ip)
193
168
  end
194
169
 
195
170
  desc "up", "Start all nodes on your vm from local!"
@@ -209,9 +184,15 @@ module Pauperism
209
184
  end
210
185
 
211
186
  no_commands do
212
- def pauper(ignore_network=false, pauperfile=Pauper::DEFAULT_PAUPERFILE)
187
+ def pauper(ignore_network=false)
188
+ return @pauper if @pauper
213
189
  pauperfile = File.expand_path(options[:pauperfile]) if options[:pauperfile]
214
- @pauper ||= Pauper.new(ignore_network, pauperfile)
190
+ @pauper = Pauper.new(ignore_network, pauperfile)
191
+ end
192
+
193
+ def fusion
194
+ return @fusion if @fusion
195
+ @fusion = Fusion.new(pauper.config.config[:vm_path])
215
196
  end
216
197
  end
217
198
 
@@ -99,9 +99,9 @@ class Fusion
99
99
  puts "I can't find your VM. Try passing in a path to the <name>.vmwarevm dir."
100
100
  exit
101
101
  elsif vms.size > 1
102
- puts "I'm not sure which VM I should use! Try passing one of these options:"
102
+ puts "I'm not sure which VM I should use! Try adding one of these to your Pauperfile:"
103
103
  vms.each do |vm|
104
- puts "\t--vmpath=#{vm}"
104
+ puts "\tvm_path \"#{vm}\""
105
105
  end
106
106
  exit
107
107
  end
@@ -109,4 +109,23 @@ class Fusion
109
109
  # Return .vmx file
110
110
  Dir[vms[0] + '/*.vmx'][0]
111
111
  end
112
+
113
+ def ip
114
+ # switch mac to the format that arp likes
115
+ arpmac = mac.gsub(/0([0-9a-fA-F])/, '\1')
116
+
117
+ match = `arp -a | grep -i #{arpmac}`.match(/\(([0-9.]+)\)/)
118
+ unless match
119
+ puts "Could not find any running VM with MAC addr: #{arpmac}"
120
+ puts " >> Manually SSH into the VM then try again <<"
121
+ exit
122
+ end
123
+
124
+ return match.captures[0]
125
+ end
126
+
127
+ def mac
128
+ vmx = VMX.new(self.vmx)
129
+ return vmx.data['ethernet0.generatedAddress']
130
+ end
112
131
  end
@@ -22,7 +22,8 @@ class Pauper
22
22
  DEFAULT_VM_PATH = File.expand_path('/var/lib/lxc/')
23
23
  SUPPORTED_RELEASES = [:lucid, :precise]
24
24
 
25
- def initialize(ignore_network = false, pauperfile = DEFAULT_PAUPERFILE)
25
+ def initialize(ignore_network = false, pauperfile = nil)
26
+ pauperfile = DEFAULT_PAUPERFILE if pauperfile.nil?
26
27
  if root?
27
28
  puts "Don't run as root!"
28
29
  exit
@@ -30,6 +31,28 @@ class Pauper
30
31
 
31
32
  @pauper_config = Pauper::Config.new(pauperfile)
32
33
  setup_network unless ignore_network
34
+ check_for_new_version
35
+ end
36
+
37
+ def check_for_new_version
38
+ begin
39
+ settings = pauper_settings()
40
+ rescue NoMethodError
41
+ settings = {skip_version_check: false}
42
+ end
43
+ unless settings[:skip_version_check]
44
+ current_version = Gem.loaded_specs['pauper'].version
45
+ latest_version = Gem.latest_version_for('pauper')
46
+ if current_version < latest_version
47
+ puts
48
+ puts "***************************************************************"
49
+ puts "It's your lucky day! There's a new version of Pauper available."
50
+ puts "You're on #{current_version}. Latest is #{latest_version}."
51
+ puts "***************************************************************"
52
+ puts
53
+ exit 1
54
+ end
55
+ end
33
56
  end
34
57
 
35
58
  def root?
@@ -105,10 +128,6 @@ class Pauper
105
128
  stop_node(base_name)
106
129
  end
107
130
 
108
- def username
109
- ENV['USER']
110
- end
111
-
112
131
  def ssh_key
113
132
  @ssh_key ||= begin
114
133
  key = @pauper_config.config[:bootstrap_ssh_key] || "/home/#{username}/.ssh/id_rsa"
@@ -237,7 +256,7 @@ EOF
237
256
  }.merge(config[:chef_options]).merge(node_config.config[:chef_options])
238
257
 
239
258
  puts "Uploading Chef files..."
240
- Net::SCP.start ip, ENV['USER'] do |scp|
259
+ Net::SCP.start ip, username do |scp|
241
260
  scp.upload! tmp_client_rb_path, "client.rb"
242
261
  scp.upload! config[:validation_key_path], "validation.pem"
243
262
  scp.upload! StringIO.new(chef_attribs.to_json), "client-config.json"
@@ -246,7 +265,7 @@ EOF
246
265
  FileUtils.rm(tmp_client_rb_path)
247
266
 
248
267
  puts "Connecting over SSH..."
249
- Net::SSH.start ip, ENV['USER'] do |ssh|
268
+ Net::SSH.start ip, username do |ssh|
250
269
  ssh_exec ssh, "sudo mv client.rb /etc/chef/"
251
270
  ssh_exec ssh, "sudo mv validation.pem /etc/chef/"
252
271
  ssh_exec ssh, "sudo mv client-config.json /etc/chef/"
@@ -364,8 +383,16 @@ EOF
364
383
  end
365
384
 
366
385
  def start_all
386
+ skipped = Array.new
367
387
  puts "Starting all nodes..."
368
- @pauper_config.config[:nodes].each { |n| start(n.name) }
388
+ @pauper_config.config[:nodes].each do |n|
389
+ if n.config[:optional]
390
+ skipped << n.name
391
+ else
392
+ start(n.name) unless n.config[:optional]
393
+ end
394
+ end
395
+ puts "Skipped: [#{skipped.join(', ')}]" unless skipped.empty?
369
396
  end
370
397
 
371
398
  def stop_all
@@ -466,7 +493,7 @@ EOF
466
493
  'Enter passphrase for '] # key waiting for password...
467
494
  puts "\e[32m====> SSH >===="
468
495
  lines = 0
469
- Net::SSH.start ip, ENV['USER'], {:forward_agent => true} do |ssh|
496
+ Net::SSH.start ip, username, {:forward_agent => true} do |ssh|
470
497
  ssh.open_channel do |channel|
471
498
  channel.request_pty do |ch, success| # Needed for password responses
472
499
  abort('Failed to get pty...') unless success
@@ -633,6 +660,7 @@ EOF
633
660
  :nodes => [],
634
661
  :ssh_user => 'dev',
635
662
  :ssh_password => 'password',
663
+ :vm_path => Fusion::DEFAULT_VMPATH,
636
664
  :run_list => [],
637
665
  :shares => [],
638
666
  :subnet => '172.16.254',
@@ -675,6 +703,10 @@ EOF
675
703
  @config[:subnet] = net
676
704
  end
677
705
 
706
+ def vm_path(path)
707
+ @config[:vm_path] = File.expand_path(path)
708
+ end
709
+
678
710
  def vmx(vmx_file)
679
711
  @config[:vmx] = File.expand_path(vmx_file)
680
712
  end
@@ -745,6 +777,7 @@ EOF
745
777
  :run_list => [],
746
778
  :chef_options => {},
747
779
  :release => :lucid,
780
+ :optional => false,
748
781
  }
749
782
  instance_eval &block
750
783
  end
@@ -776,6 +809,10 @@ EOF
776
809
  def release(release_s)
777
810
  @config[:release] = Pauper.grok_release(release_s)
778
811
  end
812
+
813
+ def optional(v=true)
814
+ @config[:optional] = v
815
+ end
779
816
  end
780
817
  end
781
818
  end
@@ -1,3 +1,3 @@
1
1
  class Pauper
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pauper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler McMullen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-11 00:00:00.000000000 Z
12
+ date: 2014-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -116,4 +116,3 @@ summary: A semi-sane way to manage a multi-vm dev environment
116
116
  test_files:
117
117
  - test/pauper_test.rb
118
118
  - test/test_helper.rb
119
- has_rdoc: