diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/leap_cli/commands/vagrant.rb | 25 |
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"]] |