vagrant-yaybu 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES ADDED
@@ -0,0 +1,47 @@
1
+ Changelog for vagrant-yaybu
2
+ ===========================
3
+
4
+ 0.0.6 (2012-02-12)
5
+ ------------------
6
+
7
+ - Add an automatically generated ``vagrant`` node accessible from yay. This
8
+ can provide details about all your defined VMs::
9
+
10
+ vagrant:
11
+ vms:
12
+ web:
13
+ name: web
14
+ interfaces:
15
+ - name: eth1
16
+ address: 10.33.33.33
17
+ netmask: 255.255.255.0
18
+ gateway: 10.33.33.1
19
+
20
+ - name: eth0
21
+ type: dhcp
22
+
23
+ To reference eth1 on the current VM you can use::
24
+
25
+ ${vagrant.vm.interfaces[0].address}
26
+
27
+ Unfortunately you won't be able to access the IP address of eth0 presently.
28
+ When using vagrant you rarely access the IP directly and have port forwards
29
+ to localhost on the host. eth0 will always be the last interface in the list.
30
+
31
+ - The bootstrap functionality will bootstrap the same version of yay and Yaybu
32
+ This can be overriden by setting ``yay_version`` and ``yaybu_version`` in
33
+ your Vagrantfile.
34
+
35
+
36
+ 0.0.5 (2012-02-18)
37
+ ------------------
38
+
39
+ - Update to support vagrant 0.9.7+
40
+
41
+
42
+ 0.0.4 (2012-02-18)
43
+ -------------
44
+
45
+ - Update to support vagrant 0.9+
46
+
47
+
data/Vagrantfile CHANGED
@@ -15,11 +15,11 @@ Vagrant::Config.run do |config|
15
15
  # You can add directories and remote locations to the search path
16
16
  # Both Yay files and assets (templates, etc) will be fetched from here.
17
17
  # The default search path is the current working directory
18
- cfg.searchpath << "../Projects/yaybu-configuration/"
19
- cfg.searchpath << "https://raw.github.com/isotoma/yaybu-examples/master/"
18
+ # cfg.searchpath << "../Projects/yaybu-configuration/"
19
+ # cfg.searchpath << "https://raw.github.com/isotoma/yaybu-examples/master/"
20
20
 
21
21
  # You can load any config that is on the searchpath
22
- cfg.include << "configuration/minecraft.yay"
22
+ # cfg.include << "configuration/minecraft.yay"
23
23
 
24
24
  # The ``yay`` parameter lets you put arbritrary config inside your Vagrant file
25
25
  cfg.yay = <<-EOS
@@ -31,7 +31,7 @@ Vagrant::Config.run do |config|
31
31
 
32
32
  # Advanced Yaybu hackers might not want to use the default python or a packaged
33
33
  # version of Yaybu. You can set this to point at your development environment.
34
- # cfg.python = "/opt/virtualenvs/yaybu/bin/python"
34
+ cfg.python = "/opt/virtualenvs/yaybu/bin/python"
35
35
 
36
36
  end
37
37
  end
@@ -38,6 +38,10 @@ class opts:
38
38
  no_resume = False
39
39
  env_passthrough = []
40
40
 
41
+ vagrant_config = StringIO.StringIO("""
42
+ <%= vagrant %>
43
+ """)
44
+
41
45
  includes = StringIO.StringIO("""
42
46
  <% if includes.length > 0 %>
43
47
  .include:
@@ -52,6 +56,7 @@ raw_config = StringIO.StringIO("""
52
56
  """)
53
57
 
54
58
  config = Config(searchpath=opts.ypath)
59
+ config.load(vagrant_config)
55
60
  config.load(includes)
56
61
  config.load(raw_config)
57
62
 
@@ -80,6 +85,8 @@ module Vagrant
80
85
  attr_accessor :python
81
86
  attr_accessor :searchpath
82
87
  attr_accessor :include
88
+ attr_accessor :yay_version
89
+ attr_accessor :yaybu_version
83
90
 
84
91
  def initialize
85
92
  super
@@ -88,6 +95,9 @@ module Vagrant
88
95
  @python = "python"
89
96
  @searchpath = []
90
97
  @include = []
98
+
99
+ @yay_version = nil
100
+ @yaybu_version = nil
91
101
  end
92
102
  end
93
103
 
@@ -101,9 +111,26 @@ module Vagrant
101
111
  ssh.sudo("which yaybu", :error_class => YaybuError, :_key => :yaybu_not_detected, :binary => "yaybu")
102
112
  rescue
103
113
  env[:ui].info "Yaybu not found so attempting to install it"
114
+
115
+ if not config.yay_version then
116
+ env[:ui].info "yay version not specified in Vagrantfile, determining from host system"
117
+ config.yay_version = get_local_version?("yay")
118
+ end
119
+
120
+ if not config.yaybu_version then
121
+ env[:ui].info "Yaybu version not specified in Vagrantfile, determining from host system"
122
+ config.yaybu_version = get_local_version?("Yaybu")
123
+ end
124
+
125
+ env[:ui].info "Running apt-get updating and checking setuptools"
104
126
  ssh.sudo("apt-get update")
105
127
  ssh.sudo("apt-get install python-setuptools -y")
106
- ssh.sudo("easy_install Yaybu")
128
+
129
+ env[:ui].info "Running 'easy_install yay==#{config.yay_version}'"
130
+ ssh.sudo("easy_install yay==#{config.yay_version}")
131
+
132
+ env[:ui].info "Running 'easy_install Yaybu==#{config.yaybu_version}'"
133
+ ssh.sudo("easy_install Yaybu==#{config.yaybu_version}")
107
134
  end
108
135
  end
109
136
 
@@ -122,6 +149,53 @@ module Vagrant
122
149
  end
123
150
  end
124
151
 
152
+ def get_local_version?(mod)
153
+ version = `#{config.python} -c 'print __import__("pkg_resources").get_distribution("#{mod}").version'`.strip
154
+ if $?.to_i != 0 then
155
+ raise YaybuError.new "Failed to get host version for '#{mod}'"
156
+ end
157
+
158
+ version
159
+ end
160
+
161
+ def get_vagrant_yaml?
162
+ data = {}
163
+ vagrant = data['vagrant'] = {}
164
+ vms = vagrant['vms'] = {}
165
+
166
+ env[:vm].env.vms.each do |name, vm|
167
+ info = {
168
+ "name" => vm.name.to_s,
169
+ "interfaces" => [],
170
+ }
171
+
172
+ idx = 1
173
+ vm.config.vm.networks.each do |type, ips|
174
+ ips.each do |ip|
175
+ info["interfaces"] << {
176
+ "name" => "eth#{idx}",
177
+ "address" => ip,
178
+ "netmask" => "255.255.255.0",
179
+ "gateway" => (ip.split(".").slice(0, 3) + [1]).join("."),
180
+ }
181
+ idx += 1
182
+ end
183
+ end
184
+
185
+ info["interfaces"] << {
186
+ "name" => "eth0",
187
+ "type" => "dhcp",
188
+ }
189
+
190
+ vms[name.to_s] = info
191
+ end
192
+
193
+ name = env[:vm].name.to_s
194
+ vagrant["vm"] = "${vagrant.vms.#{name}}"
195
+
196
+ "#" + data.to_yaml
197
+ end
198
+
125
199
  def provision!
126
200
  verify_import "yaybu"
127
201
  verify_import "yay"
@@ -136,6 +210,7 @@ module Vagrant
136
210
  :ssh_port => env[:vm].ssh.info[:port],
137
211
  :private_key_path => env[:vm].ssh.info[:private_key_path],
138
212
  :yay => config.yay,
213
+ :vagrant => get_vagrant_yaml?,
139
214
  :searchpath => config.searchpath,
140
215
  :includes => config.include,
141
216
  })
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Yaybu
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-yaybu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-18 00:00:00.000000000Z
12
+ date: 2012-09-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: This plugin adds a Yaybu 'push' provisioner to Vagrant
15
15
  email:
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
+ - CHANGES
22
23
  - Gemfile
23
24
  - Rakefile
24
25
  - Vagrantfile
@@ -48,7 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
49
  version: '0'
49
50
  requirements: []
50
51
  rubyforge_project: vagrant-yaybu
51
- rubygems_version: 1.8.10
52
+ rubygems_version: 1.8.11
52
53
  signing_key:
53
54
  specification_version: 3
54
55
  summary: Teach Vagrant about Yaybu