jproulx

Vagrant Sahara Example

Mar 17th, 2012
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.80 KB | None | 0 0
  1. require 'rubygems'                                                                
  2. require 'vagrant'                                                                
  3. require 'sahara'                                                                  
  4.                                                                                  
  5. class VagrantBox                                                                  
  6.   attr_reader :env, :cwd                                                          
  7.   def initialize(basebox)                                                        
  8.     #brittle code...                                                              
  9.     @name=basebox                                                                
  10.     @cwd=File.join("/scratch/vagrant-boxen",@name)                                
  11.     @env=Vagrant::Environment.new(:cwd =>@cwd)                                    
  12.                                                                                  
  13.     Dir.mkdir(@cwd) unless File::directory?(@cwd)                                
  14.     File.open(File.join(@cwd,"Vagrantfile"),"w+") do |conf_file|               \  
  15.                                                                                  
  16.       conf_file.write """Vagrant::Config.run do |config|                          
  17.  config.vm.box = \'#{@name}\'                                                    
  18. end                                                                            \
  19. """                                                                              
  20.     end                                                                          
  21.   end                                                                            
  22.                                                                                  
  23.   def up                                                                          
  24.     # We might be created but suspended too, need to handle more cases            
  25.     if @env.primary_vm.state != :running                                          
  26.       print "Booting #{@name} patience..."                                        
  27.       @env.cli("up")                                                              
  28.       puts "done"                                                                
  29.     end                                                                          
  30.     raise "Failed to start vm #{@name} " if @env.primary_vm.state != :running    
  31.   end                                                                            
  32.                                                                                  
  33.   def freeze                                                                      
  34.     @env.cli("sandbox","on")                                                      
  35.   end                                                                            
  36.                                                                                  
  37.   def rollback                                                                    
  38.     @env.cli("sandbox","rollback")                                                
  39.   end                                                                            
  40. end                                                                              
  41.                                                                                  
  42. @mybox=VagrantBox.new('puppetsqueeze64')                                          
  43. @mybox.up                                                                        
  44. @mybox.freeze                                                                    
  45. @mybox.env.cli('sandbox', 'status')                                              
  46. @mybox.env.primary_vm.channel.execute("cp /etc/fstab /vagrant")                  
  47. @mybox.env.cli('halt')
Advertisement
Add Comment
Please, Sign In to add comment