vagrant-yaybu 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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