summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/leap_cli/commands/vagrant.rb25
1 files changed, 17 insertions, 8 deletions
diff --git a/lib/leap_cli/commands/vagrant.rb b/lib/leap_cli/commands/vagrant.rb
index e652e8b..27c739b 100644
--- a/lib/leap_cli/commands/vagrant.rb
+++ b/lib/leap_cli/commands/vagrant.rb
@@ -9,8 +9,15 @@ module LeapCli; module Commands
local.desc 'Starts up the virtual machine(s)'
local.arg_name 'FILTER', :optional => true #, :multiple => false
local.command :start do |start|
+ start.flag(:basebox,
+ :desc => "The basebox to use. This value is passed to vagrant as the "+
+ "`config.vm.box` option. The value here should be the name of an installed box or a "+
+ "shorthand name of a box in HashiCorp's Atlas.",
+ :arg_name => 'BASEBOX',
+ :default_value => 'LEAP/wheezy'
+ )
start.action do |global_options,options,args|
- vagrant_command(["up", "sandbox on"], args)
+ vagrant_command(["up", "sandbox on"], args, options)
end
end
@@ -84,8 +91,8 @@ module LeapCli; module Commands
protected
- def vagrant_command(cmds, args)
- vagrant_setup
+ def vagrant_command(cmds, args, options={})
+ vagrant_setup(options)
cmds = cmds.to_a
if args.empty?
nodes = [""]
@@ -108,7 +115,7 @@ module LeapCli; module Commands
private
- def vagrant_setup
+ def vagrant_setup(options)
assert_bin! 'vagrant', 'Vagrant is required for running local virtual machines. Run "sudo apt-get install vagrant".'
if vagrant_version <= Gem::Version.new('1.0.0')
@@ -123,7 +130,7 @@ module LeapCli; module Commands
assert_run! 'vagrant plugin install sahara'
end
end
- create_vagrant_file
+ create_vagrant_file(options)
end
def vagrant_version
@@ -135,16 +142,18 @@ module LeapCli; module Commands
exec cmd
end
- def create_vagrant_file
+ def create_vagrant_file(options)
lines = []
netmask = IPAddr.new('255.255.255.255').mask(LeapCli.leapfile.vagrant_network.split('/').last).to_s
+ basebox = options[:basebox] || 'LEAP/wheezy'
+
if vagrant_version <= Gem::Version.new('1.1.0')
lines << %[Vagrant::Config.run do |config|]
manager.each_node do |node|
if node.vagrant?
lines << %[ config.vm.define :#{node.name} do |config|]
- lines << %[ config.vm.box = "LEAP/wheezy"]
+ lines << %[ config.vm.box = "#{basebox}"]
lines << %[ config.vm.network :hostonly, "#{node.ip_address}", :netmask => "#{netmask}"]
lines << %[ config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]]
lines << %[ config.vm.customize ["modifyvm", :id, "--name", "#{node.name}"]]
@@ -157,7 +166,7 @@ module LeapCli; module Commands
manager.each_node do |node|
if node.vagrant?
lines << %[ config.vm.define :#{node.name} do |config|]
- lines << %[ config.vm.box = "LEAP/wheezy"]
+ lines << %[ config.vm.box = "#{basebox}"]
lines << %[ config.vm.network :private_network, ip: "#{node.ip_address}"]
lines << %[ config.vm.provider "virtualbox" do |v|]
lines << %[ v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]]