vagrant 0.6.7 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +2 -2
- data/lib/vagrant/action/vm/check_box.rb +1 -0
- data/lib/vagrant/box_collection.rb +12 -6
- data/lib/vagrant/provisioners/chef.rb +8 -6
- data/lib/vagrant/systems/linux.rb +2 -1
- data/lib/vagrant/version.rb +1 -1
- data/templates/chef_server_client.erb +2 -0
- data/templates/chef_solo_solo.erb +2 -0
- data/templates/commands/init/Vagrantfile.erb +17 -7
- data/templates/locales/en.yml +9 -0
- data/templates/nfs/exports_linux.erb +4 -2
- data/test/vagrant/action/vm/check_box_test.rb +1 -3
- data/vagrant.gemspec +1 -1
- metadata +6 -6
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## 0.6.8 (unreleased)
|
2
|
+
|
3
|
+
- Network interfaces are now up/down in distinct commands instead of just
|
4
|
+
restarting "networking." [GH-192]
|
5
|
+
- Add missing translation for chef binary missing. [GH-203]
|
6
|
+
- Fix default settings for Opscode platform and comments. [GH-213]
|
7
|
+
- Blank client name for chef server now uses FQDN by default, instead of "client" [GH-214]
|
8
|
+
- Run list can now be nil, which will cause it to sync with chef server (when
|
9
|
+
chef server is enabled). [GH-214]
|
10
|
+
- Multiple NFS folders now work on linux. [GH-215]
|
11
|
+
- Add translation for state "stuck" which is very rare. [GH-218]
|
12
|
+
- virtualbox gem dependency minimum raised to 0.7.6 to verify FFI < 1.0.0 is used.
|
13
|
+
- Fix issue where box downloading from `vagrant up` didn't reload the box collection. [GH-229]
|
14
|
+
|
1
15
|
## 0.6.7 (November 3, 2010)
|
2
16
|
|
3
17
|
- Added validation to verify that a box is specified.
|
data/Gemfile.lock
CHANGED
@@ -8,7 +8,7 @@ GIT
|
|
8
8
|
PATH
|
9
9
|
remote: .
|
10
10
|
specs:
|
11
|
-
vagrant (0.6.
|
11
|
+
vagrant (0.6.8)
|
12
12
|
archive-tar-minitar (= 0.5.2)
|
13
13
|
erubis (~> 2.6.6)
|
14
14
|
i18n (~> 0.4.1)
|
@@ -17,7 +17,7 @@ PATH
|
|
17
17
|
net-scp (~> 1.0.3)
|
18
18
|
net-ssh (~> 2.0.23)
|
19
19
|
thor (~> 0.14.2)
|
20
|
-
virtualbox (~> 0.7.
|
20
|
+
virtualbox (~> 0.7.6)
|
21
21
|
|
22
22
|
GEM
|
23
23
|
remote: http://rubygems.org/
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
# Represents a collection of boxes, providing helpful methods for
|
3
5
|
# finding boxes. An instance of this is returned by {Environment#boxes}.
|
@@ -9,21 +11,25 @@ module Vagrant
|
|
9
11
|
#
|
10
12
|
# env.boxes.find("base") # => #<Vagrant::Box>
|
11
13
|
#
|
12
|
-
class BoxCollection
|
14
|
+
class BoxCollection
|
15
|
+
include Enumerable
|
16
|
+
extend Forwardable
|
17
|
+
def_delegators :@boxes, :length, :each
|
18
|
+
|
13
19
|
# The environment this box collection belongs to
|
14
20
|
attr_reader :env
|
15
21
|
|
16
22
|
def initialize(env)
|
17
|
-
super()
|
18
|
-
|
19
23
|
@env = env
|
24
|
+
@boxes = []
|
25
|
+
|
20
26
|
reload!
|
21
27
|
end
|
22
28
|
|
23
29
|
# Find a box in the collection by the given name. The name must
|
24
30
|
# be a string, for now.
|
25
31
|
def find(name)
|
26
|
-
each do |box|
|
32
|
+
@boxes.each do |box|
|
27
33
|
return box if box.name == name
|
28
34
|
end
|
29
35
|
|
@@ -33,12 +39,12 @@ module Vagrant
|
|
33
39
|
# Loads the list of all boxes from the source. This modifies the
|
34
40
|
# current array.
|
35
41
|
def reload!
|
36
|
-
clear
|
42
|
+
@boxes.clear
|
37
43
|
|
38
44
|
Dir.open(env.boxes_path) do |dir|
|
39
45
|
dir.each do |d|
|
40
46
|
next if d == "." || d == ".." || !File.directory?(env.boxes_path.join(d))
|
41
|
-
|
47
|
+
@boxes << Box.new(env, d)
|
42
48
|
end
|
43
49
|
end
|
44
50
|
end
|
@@ -84,7 +84,6 @@ module Vagrant
|
|
84
84
|
def initialize
|
85
85
|
@validation_client_name = "chef-validator"
|
86
86
|
@client_key_path = "/etc/chef/client.pem"
|
87
|
-
@node_name = "client"
|
88
87
|
|
89
88
|
@cookbooks_path = ["cookbooks", [:vm, "cookbooks"]]
|
90
89
|
@roles_path = []
|
@@ -92,13 +91,12 @@ module Vagrant
|
|
92
91
|
@log_level = :info
|
93
92
|
@json = {
|
94
93
|
:instance_role => "vagrant",
|
95
|
-
:run_list => []
|
96
94
|
}
|
97
95
|
end
|
98
96
|
|
99
97
|
# Returns the run list for the provisioning
|
100
98
|
def run_list
|
101
|
-
json[:run_list]
|
99
|
+
json[:run_list] ||= []
|
102
100
|
end
|
103
101
|
|
104
102
|
# Sets the run list to the specified value
|
@@ -138,9 +136,13 @@ module Vagrant
|
|
138
136
|
errors.add(I18n.t("vagrant.config.chef.validation_key_path")) if !validation_key_path
|
139
137
|
end
|
140
138
|
|
141
|
-
if
|
142
|
-
#
|
143
|
-
errors.add(I18n.t("vagrant.config.chef.run_list_empty")) if !run_list || run_list.empty?
|
139
|
+
if top.vm.provisioner == :chef_solo
|
140
|
+
# On chef solo, a run list MUST be specified
|
141
|
+
errors.add(I18n.t("vagrant.config.chef.run_list_empty")) if !json[:run_list] || run_list.empty?
|
142
|
+
elsif top.vm.provisioner == :chef_server
|
143
|
+
# On chef server, the run list is allowed to be nil, which causes it
|
144
|
+
# to sync with the chef server.
|
145
|
+
errors.add(I18n.t("vagrant.config.chef.run_list_empty")) if json[:run_list] && run_list.empty?
|
144
146
|
end
|
145
147
|
end
|
146
148
|
end
|
@@ -80,8 +80,9 @@ module Vagrant
|
|
80
80
|
vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
|
81
81
|
|
82
82
|
vm.ssh.execute do |ssh|
|
83
|
+
ssh.exec!("sudo /sbin/ifdown eth#{net_options[:adapter]} 2> /dev/null")
|
83
84
|
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/network/interfaces'")
|
84
|
-
ssh.exec!("sudo /
|
85
|
+
ssh.exec!("sudo /sbin/ifup eth#{net_options[:adapter]}")
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
data/lib/vagrant/version.rb
CHANGED
@@ -24,7 +24,7 @@ Vagrant::Config.run do |config|
|
|
24
24
|
# Share an additional folder to the guest VM. The first argument is
|
25
25
|
# an identifier, the second is the path on the guest to mount the
|
26
26
|
# folder, and the third is the path on the host to the actual folder.
|
27
|
-
# config.vm.share_folder
|
27
|
+
# config.vm.share_folder("v-data", "/vagrant_data", "../data")
|
28
28
|
|
29
29
|
# Enable provisioning with chef solo, specifying a cookbooks path (relative
|
30
30
|
# to this Vagrantfile), and adding some recipes and/or roles.
|
@@ -40,12 +40,22 @@ Vagrant::Config.run do |config|
|
|
40
40
|
# Enable provisioning with chef server, specifying the chef server URL,
|
41
41
|
# and the path to the validation key (relative to this Vagrantfile).
|
42
42
|
#
|
43
|
+
# The Opscode Platform uses HTTPS. Substitute your organization for
|
44
|
+
# ORGNAME in the URL and validation key.
|
45
|
+
#
|
46
|
+
# If you have your own Chef Server, use the appropriate URL, which may be
|
47
|
+
# HTTP instead of HTTPS depending on your configuration. Also change the
|
48
|
+
# validation key to validation.pem.
|
49
|
+
#
|
43
50
|
# config.vm.provisioner = :chef_server
|
44
|
-
# config.chef.chef_server_url = "
|
45
|
-
# config.chef.validation_key_path = "
|
51
|
+
# config.chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
52
|
+
# config.chef.validation_key_path = "ORGNAME-validator.pem"
|
53
|
+
#
|
54
|
+
# If you're using the Opscode platform, your validator client is
|
55
|
+
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
56
|
+
#
|
57
|
+
# IF you have your own Chef Server, the default validation client name is
|
58
|
+
# chef-validator, unless you changed the configuration.
|
46
59
|
#
|
47
|
-
#
|
48
|
-
# If you're using your own chef server, you may have to set it, but it depends
|
49
|
-
# on how your Chef server is configured.
|
50
|
-
# config.chef.validation_client_name = "organization-validator"
|
60
|
+
# config.chef.validation_client_name = "ORGNAME-validator"
|
51
61
|
end
|
data/templates/locales/en.yml
CHANGED
@@ -9,6 +9,10 @@ en:
|
|
9
9
|
errors:
|
10
10
|
base_vm_not_found: The base VM with the name '%{name}' was not found.
|
11
11
|
box_not_found: Box '%{name}' could not be found.
|
12
|
+
chef_not_detected: |-
|
13
|
+
The chef (either `chef-solo` or `chef-client`) binary was not found on
|
14
|
+
the VM and is required for chef provisioning. Please verify that chef
|
15
|
+
is installed and that the binary is available on the PATH.
|
12
16
|
cli_missing_env: This command requires that a Vagrant environment be properly passed in as the last parameter.
|
13
17
|
config_validation: |-
|
14
18
|
There was a problem with the configuration of Vagrant. The error message(s)
|
@@ -146,6 +150,11 @@ en:
|
|
146
150
|
suspend the virtual machine. In either case, to restart it again,
|
147
151
|
simply run `vagrant up`.
|
148
152
|
saved: To resume this VM, simply run `vagrant up`.
|
153
|
+
stuck: |-
|
154
|
+
The VM is "stuck!" This is a very rare state which means that
|
155
|
+
VirtualBox is unable to recover the current state of the VM.
|
156
|
+
The only known solution to this problem is to restart your
|
157
|
+
machine, sorry.
|
149
158
|
listing: |-
|
150
159
|
This environment represents multiple VMs. The VMs are all listed
|
151
160
|
above with their current state. For more information about a specific
|
@@ -1,3 +1,5 @@
|
|
1
1
|
# VAGRANT-BEGIN: <%= uuid %>
|
2
|
-
<% folders.each do |name, opts|
|
3
|
-
|
2
|
+
<% folders.each do |name, opts| %>
|
3
|
+
<%= opts[:hostpath] %> <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>)
|
4
|
+
<% end %>
|
5
|
+
# VAGRANT-END: <%= uuid %>
|
@@ -6,9 +6,6 @@ class CheckBoxVMActionTest < Test::Unit::TestCase
|
|
6
6
|
end
|
7
7
|
|
8
8
|
context "calling" do
|
9
|
-
setup do
|
10
|
-
end
|
11
|
-
|
12
9
|
should "raise error if box not specified" do
|
13
10
|
app, env = action_env(vagrant_env(vagrantfile(<<-vf)))
|
14
11
|
config.vm.box = nil
|
@@ -47,6 +44,7 @@ class CheckBoxVMActionTest < Test::Unit::TestCase
|
|
47
44
|
seq = sequence("seq")
|
48
45
|
env.env.boxes.expects(:find).returns(nil)
|
49
46
|
Vagrant::Box.expects(:add).with(env.env, env["config"].vm.box, env["config"].vm.box_url).in_sequence(seq)
|
47
|
+
env.env.boxes.expects(:reload!).in_sequence(seq)
|
50
48
|
app.expects(:call).with(env).once.in_sequence(seq)
|
51
49
|
|
52
50
|
assert_nothing_raised {
|
data/vagrant.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency "net-scp", "~> 1.0.3"
|
22
22
|
s.add_dependency "i18n", "~> 0.4.1"
|
23
23
|
s.add_dependency "thor", "~> 0.14.2"
|
24
|
-
s.add_dependency "virtualbox", "~> 0.7.
|
24
|
+
s.add_dependency "virtualbox", "~> 0.7.6"
|
25
25
|
|
26
26
|
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "contest", ">= 0.1.2"
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 6
|
8
|
-
-
|
9
|
-
version: 0.6.
|
8
|
+
- 8
|
9
|
+
version: 0.6.8
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mitchell Hashimoto
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-30 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -148,8 +148,8 @@ dependencies:
|
|
148
148
|
segments:
|
149
149
|
- 0
|
150
150
|
- 7
|
151
|
-
-
|
152
|
-
version: 0.7.
|
151
|
+
- 6
|
152
|
+
version: 0.7.6
|
153
153
|
type: :runtime
|
154
154
|
prerelease: false
|
155
155
|
version_requirements: *id009
|
@@ -441,7 +441,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
441
441
|
requirements:
|
442
442
|
- - ">="
|
443
443
|
- !ruby/object:Gem::Version
|
444
|
-
hash:
|
444
|
+
hash: 2622964393659946965
|
445
445
|
segments:
|
446
446
|
- 0
|
447
447
|
version: "0"
|