vagrant 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -4
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/bin/vagrant +5 -13
- data/config/default.rb +1 -0
- data/keys/README.md +8 -1
- data/keys/vagrant.ppk +26 -0
- data/lib/vagrant.rb +3 -3
- data/lib/vagrant/actions/base.rb +15 -4
- data/lib/vagrant/actions/box/add.rb +1 -1
- data/lib/vagrant/actions/box/download.rb +72 -66
- data/lib/vagrant/actions/box/unpackage.rb +1 -4
- data/lib/vagrant/actions/runner.rb +1 -1
- data/lib/vagrant/actions/vm/boot.rb +5 -7
- data/lib/vagrant/actions/vm/customize.rb +2 -2
- data/lib/vagrant/actions/vm/destroy.rb +2 -2
- data/lib/vagrant/actions/vm/down.rb +7 -0
- data/lib/vagrant/actions/vm/export.rb +10 -4
- data/lib/vagrant/actions/vm/forward_ports.rb +5 -15
- data/lib/vagrant/actions/vm/halt.rb +5 -3
- data/lib/vagrant/actions/vm/import.rb +10 -3
- data/lib/vagrant/actions/vm/move_hard_drive.rb +1 -3
- data/lib/vagrant/actions/vm/package.rb +33 -10
- data/lib/vagrant/actions/vm/provision.rb +4 -4
- data/lib/vagrant/actions/vm/reload.rb +1 -1
- data/lib/vagrant/actions/vm/resume.rb +1 -1
- data/lib/vagrant/actions/vm/shared_folders.rb +7 -7
- data/lib/vagrant/actions/vm/start.rb +3 -2
- data/lib/vagrant/actions/vm/suspend.rb +2 -2
- data/lib/vagrant/actions/vm/up.rb +7 -17
- data/lib/vagrant/active_list.rb +52 -45
- data/lib/vagrant/box.rb +18 -11
- data/lib/vagrant/busy.rb +7 -0
- data/lib/vagrant/command.rb +27 -0
- data/lib/vagrant/commands/base.rb +163 -0
- data/lib/vagrant/commands/box.rb +16 -0
- data/lib/vagrant/commands/box/add.rb +24 -0
- data/lib/vagrant/commands/box/list.rb +30 -0
- data/lib/vagrant/commands/box/remove.rb +31 -0
- data/lib/vagrant/commands/destroy.rb +23 -0
- data/lib/vagrant/commands/down.rb +16 -0
- data/lib/vagrant/commands/halt.rb +23 -0
- data/lib/vagrant/commands/init.rb +32 -0
- data/lib/vagrant/commands/package.rb +46 -0
- data/lib/vagrant/commands/reload.rb +22 -0
- data/lib/vagrant/commands/resume.rb +22 -0
- data/lib/vagrant/commands/ssh.rb +22 -0
- data/lib/vagrant/commands/ssh_config.rb +30 -0
- data/lib/vagrant/commands/status.rb +58 -0
- data/lib/vagrant/commands/suspend.rb +23 -0
- data/lib/vagrant/commands/up.rb +26 -0
- data/lib/vagrant/config.rb +21 -11
- data/lib/vagrant/downloaders/file.rb +5 -5
- data/lib/vagrant/downloaders/http.rb +10 -15
- data/lib/vagrant/environment.rb +259 -0
- data/lib/vagrant/provisioners/base.rb +7 -0
- data/lib/vagrant/provisioners/chef.rb +24 -9
- data/lib/vagrant/provisioners/chef_server.rb +23 -48
- data/lib/vagrant/provisioners/chef_solo.rb +48 -22
- data/lib/vagrant/ssh.rb +95 -46
- data/lib/vagrant/util.rb +2 -2
- data/lib/vagrant/util/errors.rb +36 -0
- data/lib/vagrant/util/platform.rb +12 -0
- data/lib/vagrant/util/progress_meter.rb +33 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/vm.rb +1 -0
- data/templates/{Vagrantfile → Vagrantfile.erb} +2 -2
- data/templates/chef_server_client.erb +16 -0
- data/templates/chef_solo_solo.erb +4 -0
- data/templates/errors.yml +157 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/ssh_config.erb +7 -0
- data/test/test_helper.rb +12 -15
- data/test/vagrant/actions/box/add_test.rb +1 -2
- data/test/vagrant/actions/box/destroy_test.rb +0 -1
- data/test/vagrant/actions/box/download_test.rb +40 -15
- data/test/vagrant/actions/box/unpackage_test.rb +2 -3
- data/test/vagrant/actions/collection_test.rb +8 -5
- data/test/vagrant/actions/runner_test.rb +8 -6
- data/test/vagrant/actions/vm/boot_test.rb +12 -11
- data/test/vagrant/actions/vm/customize_test.rb +2 -3
- data/test/vagrant/actions/vm/destroy_test.rb +2 -3
- data/test/vagrant/actions/vm/down_test.rb +16 -3
- data/test/vagrant/actions/vm/export_test.rb +4 -5
- data/test/vagrant/actions/vm/forward_ports_test.rb +6 -5
- data/test/vagrant/actions/vm/halt_test.rb +8 -2
- data/test/vagrant/actions/vm/import_test.rb +5 -5
- data/test/vagrant/actions/vm/move_hard_drive_test.rb +4 -6
- data/test/vagrant/actions/vm/package_test.rb +60 -22
- data/test/vagrant/actions/vm/provision_test.rb +7 -16
- data/test/vagrant/actions/vm/reload_test.rb +3 -2
- data/test/vagrant/actions/vm/resume_test.rb +0 -1
- data/test/vagrant/actions/vm/shared_folders_test.rb +17 -12
- data/test/vagrant/actions/vm/start_test.rb +10 -3
- data/test/vagrant/actions/vm/suspend_test.rb +1 -2
- data/test/vagrant/actions/vm/up_test.rb +19 -11
- data/test/vagrant/active_list_test.rb +148 -129
- data/test/vagrant/box_test.rb +26 -14
- data/test/vagrant/busy_test.rb +15 -6
- data/test/vagrant/command_test.rb +53 -0
- data/test/vagrant/commands/base_test.rb +118 -0
- data/test/vagrant/commands/box/add_test.rb +34 -0
- data/test/vagrant/commands/box/list_test.rb +32 -0
- data/test/vagrant/commands/box/remove_test.rb +41 -0
- data/test/vagrant/commands/destroy_test.rb +32 -0
- data/test/vagrant/commands/down_test.rb +17 -0
- data/test/vagrant/commands/halt_test.rb +28 -0
- data/test/vagrant/commands/init_test.rb +55 -0
- data/test/vagrant/commands/package_test.rb +84 -0
- data/test/vagrant/commands/reload_test.rb +28 -0
- data/test/vagrant/commands/resume_test.rb +33 -0
- data/test/vagrant/commands/ssh_config_test.rb +54 -0
- data/test/vagrant/commands/ssh_test.rb +32 -0
- data/test/vagrant/commands/status_test.rb +20 -0
- data/test/vagrant/commands/suspend_test.rb +33 -0
- data/test/vagrant/commands/up_test.rb +41 -0
- data/test/vagrant/config_test.rb +42 -17
- data/test/vagrant/downloaders/file_test.rb +7 -0
- data/test/vagrant/downloaders/http_test.rb +12 -0
- data/test/vagrant/environment_test.rb +595 -0
- data/test/vagrant/provisioners/base_test.rb +7 -1
- data/test/vagrant/provisioners/chef_server_test.rb +41 -51
- data/test/vagrant/provisioners/chef_solo_test.rb +93 -62
- data/test/vagrant/provisioners/chef_test.rb +61 -15
- data/test/vagrant/ssh_test.rb +166 -38
- data/test/vagrant/util/errors_test.rb +57 -0
- data/test/vagrant/util/progress_meter_test.rb +33 -0
- data/test/vagrant/{stacked_proc_runner_test.rb → util/stacked_proc_runner_test.rb} +3 -3
- data/test/vagrant/util/template_renderer_test.rb +138 -0
- data/test/vagrant/vm_test.rb +3 -2
- data/vagrant.gemspec +88 -33
- metadata +94 -51
- data/bin/vagrant-box +0 -34
- data/bin/vagrant-down +0 -27
- data/bin/vagrant-halt +0 -28
- data/bin/vagrant-init +0 -27
- data/bin/vagrant-package +0 -29
- data/bin/vagrant-reload +0 -29
- data/bin/vagrant-resume +0 -27
- data/bin/vagrant-ssh +0 -27
- data/bin/vagrant-status +0 -29
- data/bin/vagrant-suspend +0 -27
- data/bin/vagrant-up +0 -29
- data/lib/vagrant/commands.rb +0 -234
- data/lib/vagrant/env.rb +0 -189
- data/lib/vagrant/stacked_proc_runner.rb +0 -33
- data/test/vagrant/commands_test.rb +0 -269
- data/test/vagrant/env_test.rb +0 -418
data/bin/vagrant-box
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "manage boxes"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage:
|
19
|
-
|
20
|
-
#{command.full_name} add name uri
|
21
|
-
#{command.full_name} remove name
|
22
|
-
|
23
|
-
Add and remove vagrant boxes.
|
24
|
-
|
25
|
-
EOS
|
26
|
-
|
27
|
-
run do |command|
|
28
|
-
begin
|
29
|
-
Vagrant::Commands.box(command.argv)
|
30
|
-
rescue ArgumentError
|
31
|
-
educate
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/bin/vagrant-down
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "destroys the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Destroys the vagrant environment.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
run do |command|
|
25
|
-
Vagrant::Commands.down
|
26
|
-
end
|
27
|
-
end
|
data/bin/vagrant-halt
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "forcibly halts the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Forcibly halts the vagrant environment. This is the equivalent
|
21
|
-
of pulling the power on your computer.
|
22
|
-
|
23
|
-
EOS
|
24
|
-
|
25
|
-
run do |command|
|
26
|
-
Vagrant::Commands.halt
|
27
|
-
end
|
28
|
-
end
|
data/bin/vagrant-init
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "initializes directory for vagrant use"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Creates the initial files required for using vagrant.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
run do |command|
|
25
|
-
Vagrant::Commands.init
|
26
|
-
end
|
27
|
-
end
|
data/bin/vagrant-package
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "package the current vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Package the current vagrant environment into a box.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
opt :include, "files to include in the package", :type => :strings
|
25
|
-
|
26
|
-
run do |command|
|
27
|
-
Vagrant::Commands.package(command.argv[0], command.opts[:include])
|
28
|
-
end
|
29
|
-
end
|
data/bin/vagrant-reload
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "reload the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Reloads the vagrant environment. This forces a shutdown of the VM,
|
21
|
-
updates the metadata (forwarded ports, shared folders, etc.), restarts
|
22
|
-
the VM, and reruns the chef recipes.
|
23
|
-
|
24
|
-
EOS
|
25
|
-
|
26
|
-
run do |command|
|
27
|
-
Vagrant::Commands.reload
|
28
|
-
end
|
29
|
-
end
|
data/bin/vagrant-resume
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "resumes the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Resumes the vagrant environment.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
run do |command|
|
25
|
-
Vagrant::Commands.resume
|
26
|
-
end
|
27
|
-
end
|
data/bin/vagrant-ssh
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "opens an SSH connection into the VM"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Opens an SSH connection into the created VM.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
run do |command|
|
25
|
-
Vagrant::Commands.ssh
|
26
|
-
end
|
27
|
-
end
|
data/bin/vagrant-status
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "Outputs the status of the current environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
This command outputs the status of the current environment. This command
|
21
|
-
tells you whether the environment is created, running, suspended,
|
22
|
-
etc.
|
23
|
-
|
24
|
-
EOS
|
25
|
-
|
26
|
-
run do |command|
|
27
|
-
Vagrant::Commands.status
|
28
|
-
end
|
29
|
-
end
|
data/bin/vagrant-suspend
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "suspends the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Suspends the vagrant environment.
|
21
|
-
|
22
|
-
EOS
|
23
|
-
|
24
|
-
run do |command|
|
25
|
-
Vagrant::Commands.suspend
|
26
|
-
end
|
27
|
-
end
|
data/bin/vagrant-up
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
-
rescue LoadError
|
5
|
-
# Fallback on rubygems
|
6
|
-
require "rubygems"
|
7
|
-
end
|
8
|
-
|
9
|
-
require 'git-style-binary/command'
|
10
|
-
|
11
|
-
# Get library
|
12
|
-
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
13
|
-
require File.expand_path('vagrant', libdir)
|
14
|
-
|
15
|
-
GitStyleBinary.command do
|
16
|
-
short_desc "create the vagrant environment"
|
17
|
-
banner <<-EOS
|
18
|
-
Usage: #{command.full_name} #{all_options_string}
|
19
|
-
|
20
|
-
Create the vagrant environment if it doesn't exist,
|
21
|
-
otherwise start the vagrant environment if its not
|
22
|
-
already running.
|
23
|
-
|
24
|
-
EOS
|
25
|
-
|
26
|
-
run do |command|
|
27
|
-
Vagrant::Commands.up
|
28
|
-
end
|
29
|
-
end
|
data/lib/vagrant/commands.rb
DELETED
@@ -1,234 +0,0 @@
|
|
1
|
-
module Vagrant
|
2
|
-
# Contains all the command-line commands invoked by the
|
3
|
-
# binaries. Having them all in one location assists with
|
4
|
-
# documentation and also takes the commands out of some of
|
5
|
-
# the other classes.
|
6
|
-
class Commands
|
7
|
-
extend Vagrant::Util
|
8
|
-
|
9
|
-
class << self
|
10
|
-
# Initializes a directory for use with vagrant. This command copies an
|
11
|
-
# initial `Vagrantfile` into the current working directory so you can
|
12
|
-
# begin using vagrant. The configuration file contains some documentation
|
13
|
-
# to get you started.
|
14
|
-
def init
|
15
|
-
rootfile_path = File.join(Dir.pwd, Env::ROOTFILE_NAME)
|
16
|
-
if File.exist?(rootfile_path)
|
17
|
-
error_and_exit(<<-error)
|
18
|
-
It looks like this directory is already setup for vagrant! (A #{Env::ROOTFILE_NAME}
|
19
|
-
already exists.)
|
20
|
-
error
|
21
|
-
end
|
22
|
-
|
23
|
-
# Copy over the rootfile template into this directory
|
24
|
-
FileUtils.cp(File.join(PROJECT_ROOT, "templates", Env::ROOTFILE_NAME), rootfile_path)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Outputs the status of the current environment. This command outputs
|
28
|
-
# useful information such as whether or not the environment is created
|
29
|
-
# and if its running, suspended, etc.
|
30
|
-
def status
|
31
|
-
Env.load!
|
32
|
-
|
33
|
-
wrap_output do
|
34
|
-
if !Env.persisted_vm
|
35
|
-
puts <<-msg
|
36
|
-
The environment has not yet been created. Run `vagrant up` to create the
|
37
|
-
environment.
|
38
|
-
msg
|
39
|
-
else
|
40
|
-
additional_msg = ""
|
41
|
-
if Env.persisted_vm.vm.running?
|
42
|
-
additional_msg = <<-msg
|
43
|
-
To stop this VM, you can run `vagrant halt` to shut it down forcefully,
|
44
|
-
or you can run `vagrant suspend` to simply suspend the virtual machine.
|
45
|
-
In either case, to restart it again, simply run a `vagrant up`.
|
46
|
-
msg
|
47
|
-
elsif Env.persisted_vm.vm.saved?
|
48
|
-
additional_msg = <<-msg
|
49
|
-
To resume this VM, simply run `vagrant up`.
|
50
|
-
msg
|
51
|
-
elsif Env.persisted_vm.vm.powered_off?
|
52
|
-
additional_msg = <<-msg
|
53
|
-
To restart this VM, simply run `vagrant up`.
|
54
|
-
msg
|
55
|
-
end
|
56
|
-
|
57
|
-
if !additional_msg.empty?
|
58
|
-
additional_msg.chomp!
|
59
|
-
additional_msg = "\n\n#{additional_msg}"
|
60
|
-
end
|
61
|
-
|
62
|
-
puts <<-msg
|
63
|
-
The environment has been created. The status of the current environment's
|
64
|
-
virtual machine is: "#{Env.persisted_vm.vm.state}."#{additional_msg}
|
65
|
-
msg
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
# Bring up a vagrant instance. This handles everything from importing
|
71
|
-
# the base VM, setting up shared folders, forwarded ports, etc to
|
72
|
-
# provisioning the instance with chef. {up} also starts the instance,
|
73
|
-
# running it in the background.
|
74
|
-
def up
|
75
|
-
Env.load!
|
76
|
-
|
77
|
-
if Env.persisted_vm
|
78
|
-
logger.info "VM already created. Starting VM if its not already running..."
|
79
|
-
Env.persisted_vm.start
|
80
|
-
else
|
81
|
-
Env.require_box
|
82
|
-
VM.execute!(Actions::VM::Up)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
# Tear down a vagrant instance. This not only shuts down the instance
|
87
|
-
# (if its running), but also deletes it from the system, including the
|
88
|
-
# hard disks associated with it.
|
89
|
-
#
|
90
|
-
# This command requires that an instance already be brought up with
|
91
|
-
# `vagrant up`.
|
92
|
-
def down
|
93
|
-
Env.load!
|
94
|
-
Env.require_persisted_vm
|
95
|
-
Env.persisted_vm.destroy
|
96
|
-
end
|
97
|
-
|
98
|
-
# Reload the environment. This is almost equivalent to the {up} command
|
99
|
-
# except that it doesn't import the VM and do the initialize bootstrapping
|
100
|
-
# of the instance. Instead, it forces a shutdown (if its running) of the
|
101
|
-
# VM, updates the metadata (shared folders, forwarded ports), restarts
|
102
|
-
# the VM, and then reruns the provisioning if enabled.
|
103
|
-
def reload
|
104
|
-
Env.load!
|
105
|
-
Env.require_persisted_vm
|
106
|
-
Env.persisted_vm.execute!(Actions::VM::Reload)
|
107
|
-
end
|
108
|
-
|
109
|
-
# SSH into the vagrant instance. This will setup an SSH connection into
|
110
|
-
# the vagrant instance, replacing the running ruby process with the SSH
|
111
|
-
# connection.
|
112
|
-
#
|
113
|
-
# This command requires that an instance already be brought up with
|
114
|
-
# `vagrant up`.
|
115
|
-
def ssh
|
116
|
-
Env.load!
|
117
|
-
Env.require_persisted_vm
|
118
|
-
SSH.connect
|
119
|
-
end
|
120
|
-
|
121
|
-
# Halts a running vagrant instance. This forcibly halts the instance;
|
122
|
-
# it is the equivalent of pulling the power on a machine. The instance
|
123
|
-
# can be restarted again with {up}.
|
124
|
-
#
|
125
|
-
# This command requires than an instance already be brought up with
|
126
|
-
# `vagrant up`.
|
127
|
-
def halt
|
128
|
-
Env.load!
|
129
|
-
Env.require_persisted_vm
|
130
|
-
Env.persisted_vm.execute!(Actions::VM::Halt)
|
131
|
-
end
|
132
|
-
|
133
|
-
# Suspend a running vagrant instance. This suspends the instance, saving
|
134
|
-
# the state of the VM and "pausing" it. The instance can be resumed
|
135
|
-
# again with {resume}.
|
136
|
-
#
|
137
|
-
# This command requires that an instance already be brought up with
|
138
|
-
# `vagrant up`.
|
139
|
-
def suspend
|
140
|
-
Env.load!
|
141
|
-
Env.require_persisted_vm
|
142
|
-
Env.persisted_vm.suspend
|
143
|
-
end
|
144
|
-
|
145
|
-
# Resume a running vagrant instance. This resumes an already suspended
|
146
|
-
# instance (from {suspend}).
|
147
|
-
#
|
148
|
-
# This command requires that an instance already be brought up with
|
149
|
-
# `vagrant up`.
|
150
|
-
def resume
|
151
|
-
Env.load!
|
152
|
-
Env.require_persisted_vm
|
153
|
-
Env.persisted_vm.resume
|
154
|
-
end
|
155
|
-
|
156
|
-
# Export and package the current vm
|
157
|
-
#
|
158
|
-
# This command requires that an instance be powered off
|
159
|
-
def package(out_path=nil, include_files=[])
|
160
|
-
Env.load!
|
161
|
-
Env.require_persisted_vm
|
162
|
-
error_and_exit(<<-error) unless Env.persisted_vm.powered_off?
|
163
|
-
The vagrant virtual environment you are trying to package must be powered off
|
164
|
-
error
|
165
|
-
|
166
|
-
Env.persisted_vm.package(out_path, include_files)
|
167
|
-
end
|
168
|
-
|
169
|
-
# Manages the `vagrant box` command, allowing the user to add
|
170
|
-
# and remove boxes. This single command, given an array, determines
|
171
|
-
# which action to take and calls the respective action method
|
172
|
-
# (see {box_add} and {box_remove})
|
173
|
-
def box(argv)
|
174
|
-
Env.load!
|
175
|
-
|
176
|
-
sub_commands = ["list", "add", "remove"]
|
177
|
-
|
178
|
-
if !sub_commands.include?(argv[0])
|
179
|
-
error_and_exit(<<-error)
|
180
|
-
Please specify a valid action to take on the boxes, either
|
181
|
-
`add` or `remove`. Examples:
|
182
|
-
|
183
|
-
vagrant box add name uri
|
184
|
-
vagrant box remove name
|
185
|
-
vagrant box list
|
186
|
-
error
|
187
|
-
end
|
188
|
-
|
189
|
-
send("box_#{argv[0]}", *argv[1..-1])
|
190
|
-
end
|
191
|
-
|
192
|
-
# Lists all added boxes
|
193
|
-
def box_list
|
194
|
-
boxes = Box.all.sort
|
195
|
-
|
196
|
-
wrap_output do
|
197
|
-
if !boxes.empty?
|
198
|
-
puts "Installed Vagrant Boxes:\n\n"
|
199
|
-
boxes.each do |box|
|
200
|
-
puts box
|
201
|
-
end
|
202
|
-
else
|
203
|
-
puts "No Vagrant Boxes Added!"
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
# Adds a box to the local filesystem, given a URI.
|
209
|
-
def box_add(name, path)
|
210
|
-
Box.add(name, path)
|
211
|
-
end
|
212
|
-
|
213
|
-
# Removes a box.
|
214
|
-
def box_remove(name)
|
215
|
-
box = Box.find(name)
|
216
|
-
if box.nil?
|
217
|
-
error_and_exit(<<-error)
|
218
|
-
The box you're attempting to remove does not exist!
|
219
|
-
error
|
220
|
-
return # for tests
|
221
|
-
end
|
222
|
-
|
223
|
-
box.destroy
|
224
|
-
end
|
225
|
-
|
226
|
-
private
|
227
|
-
|
228
|
-
def act_on_vm(&block)
|
229
|
-
yield Env.persisted_vm
|
230
|
-
Env.persisted_vm.execute!
|
231
|
-
end
|
232
|
-
end
|
233
|
-
end
|
234
|
-
end
|