vagrant_bootstrap 0.2.0 → 0.2.1
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/lib/vagrant_bootstrap/action/destroy.rb +30 -0
- data/lib/vagrant_bootstrap/bootstrap.rb +21 -1
- data/lib/vagrant_bootstrap/commands/bootstrap.rb +2 -8
- data/lib/vagrant_bootstrap/tap_bridge.rb +4 -6
- data/lib/vagrant_bootstrap/version.rb +1 -1
- data/lib/vagrant_bootstrap.rb +4 -0
- data/lib/vagrant_init.rb +6 -0
- data/vagrant_bootstrap.gemspec +4 -2
- metadata +14 -11
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'vagrant'
|
3
|
+
require 'chef/knife'
|
4
|
+
require 'chef/api_client'
|
5
|
+
require 'chef/node'
|
6
|
+
|
7
|
+
module VagrantBootstrap
|
8
|
+
module Action
|
9
|
+
class Destroy
|
10
|
+
def initialize(app, env)
|
11
|
+
@app = app
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
@client_name = env[:vm].config.keys[:vm].host_name
|
16
|
+
remove_chef_client_and_node!
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def remove_chef_client_and_node!
|
22
|
+
knife = Chef::Knife.new
|
23
|
+
knife.configure_chef
|
24
|
+
knife.config[:yes] = true
|
25
|
+
knife.delete_object Chef::ApiClient, @client_name
|
26
|
+
knife.delete_object Chef::Node, @client_name
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'fileutils'
|
3
3
|
require 'ostruct'
|
4
|
-
require 'log4r'
|
5
4
|
|
6
5
|
module VagrantBootstrap
|
7
6
|
class Bootstrap
|
@@ -10,12 +9,33 @@ module VagrantBootstrap
|
|
10
9
|
end
|
11
10
|
|
12
11
|
def setup
|
12
|
+
puts "Setting up a Vagrant environment with"
|
13
|
+
puts
|
14
|
+
puts " directory: #{@opts[:name]}"
|
15
|
+
puts " bridge: #{@opts[:bridge]}"
|
16
|
+
puts
|
13
17
|
make_directory
|
14
18
|
render
|
19
|
+
full_path = File.expand_path @opts[:name]
|
20
|
+
puts HELP_TEXT % {name: @opts[:name]}
|
15
21
|
end
|
16
22
|
|
17
23
|
private
|
18
24
|
|
25
|
+
HELP_TEXT = <<-HELP
|
26
|
+
You're ready to go.
|
27
|
+
|
28
|
+
cd %{name}
|
29
|
+
vagrant up
|
30
|
+
|
31
|
+
When you're finished with the VM for good, remember to
|
32
|
+
|
33
|
+
cd %{name}
|
34
|
+
vagrant destroy
|
35
|
+
|
36
|
+
This also deletes the node and client from Chef.
|
37
|
+
HELP
|
38
|
+
|
19
39
|
def make_directory
|
20
40
|
dir = @opts[:name]
|
21
41
|
FileUtils.rm_rf dir if @opts[:force]
|
@@ -14,7 +14,7 @@ module VagrantBootstrap
|
|
14
14
|
o.separator ''
|
15
15
|
|
16
16
|
o.on('-b', '--bridge BRIDGE',
|
17
|
-
"Specify a bridge interface. Default is tap-#{whoami}") do |b|
|
17
|
+
"Specify a bridge interface. Default is tap-#{VagrantBootstrap.whoami}") do |b|
|
18
18
|
options[:bridge] = b
|
19
19
|
end
|
20
20
|
|
@@ -29,16 +29,10 @@ module VagrantBootstrap
|
|
29
29
|
|
30
30
|
options[:template] ||= 'default.erb'
|
31
31
|
options[:bridge] ||= VagrantBootstrap::TapBridge.new.iface
|
32
|
-
options[:name] = "vagrant-#{whoami}-#{argv[0].strip}"
|
32
|
+
options[:name] = "vagrant-#{VagrantBootstrap.whoami}-#{argv[0].strip}"
|
33
33
|
|
34
34
|
VagrantBootstrap::Bootstrap.new(options).setup
|
35
35
|
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def whoami
|
40
|
-
@whoami ||= `whoami`.strip
|
41
|
-
end
|
42
36
|
end
|
43
37
|
end
|
44
38
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'vagrant_bootstrap'
|
2
|
+
|
1
3
|
module VagrantBootstrap
|
2
4
|
class TapBridge
|
3
5
|
|
@@ -11,7 +13,7 @@ module VagrantBootstrap
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def iface
|
14
|
-
@iface ||= "tap-#{
|
16
|
+
@iface ||= "tap-#{VagrantBootstrap.whoami}"
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
@@ -25,17 +27,13 @@ module VagrantBootstrap
|
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
|
-
def me
|
29
|
-
@me ||= `whoami`.strip
|
30
|
-
end
|
31
|
-
|
32
30
|
def iface_exists?
|
33
31
|
`ip tuntap|grep "#{iface}" 2>&1 > /dev/null`
|
34
32
|
$?.exitstatus == 0
|
35
33
|
end
|
36
34
|
|
37
35
|
def create_iface
|
38
|
-
`sudo ip tuntap add mode tap user #{
|
36
|
+
`sudo ip tuntap add mode tap user #{VagrantBootstrap.whoami} #{iface}`
|
39
37
|
end
|
40
38
|
|
41
39
|
def bridge_exists?
|
data/lib/vagrant_bootstrap.rb
CHANGED
data/lib/vagrant_init.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
require 'vagrant'
|
2
2
|
require 'vagrant_bootstrap/commands/bootstrap'
|
3
|
+
require 'vagrant_bootstrap/action/destroy'
|
3
4
|
|
4
5
|
Vagrant.commands.register(:bootstrap) { VagrantBootstrap::Commands::Bootstrap }
|
6
|
+
|
7
|
+
Vagrant.actions[:destroy].insert_after(
|
8
|
+
Vagrant::Action::VM::Destroy,
|
9
|
+
VagrantBootstrap::Action::Destroy
|
10
|
+
)
|
data/vagrant_bootstrap.gemspec
CHANGED
@@ -14,8 +14,10 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.require_paths = ["lib"]
|
15
15
|
gem.version = VagrantBootstrap::VERSION
|
16
16
|
|
17
|
-
gem.add_dependency 'vagrant'
|
18
|
-
gem.add_dependency '
|
17
|
+
gem.add_dependency 'vagrant', '~> 1.0'
|
18
|
+
gem.add_dependency 'chef', '~> 10.12'
|
19
19
|
|
20
|
+
gem.requirements << 'Ubuntu 10.10 or greater'
|
20
21
|
gem.requirements << 'brctl binary'
|
22
|
+
gem.requirements << 'admin on your chef repo'
|
21
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,40 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: vagrant
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
21
|
+
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
29
|
+
version: '1.0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: chef
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
37
|
+
version: '10.12'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
45
|
+
version: '10.12'
|
46
46
|
description: Easily generate a Vagrantfile in a namespaced directory
|
47
47
|
email:
|
48
48
|
- justin.force@gmail.com
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- Rakefile
|
59
59
|
- bin/vagrant_bootstrap
|
60
60
|
- lib/vagrant_bootstrap.rb
|
61
|
+
- lib/vagrant_bootstrap/action/destroy.rb
|
61
62
|
- lib/vagrant_bootstrap/bootstrap.rb
|
62
63
|
- lib/vagrant_bootstrap/commands/bootstrap.rb
|
63
64
|
- lib/vagrant_bootstrap/tap_bridge.rb
|
@@ -84,7 +85,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
85
|
- !ruby/object:Gem::Version
|
85
86
|
version: '0'
|
86
87
|
requirements:
|
88
|
+
- Ubuntu 10.10 or greater
|
87
89
|
- brctl binary
|
90
|
+
- admin on your chef repo
|
88
91
|
rubyforge_project:
|
89
92
|
rubygems_version: 1.8.24
|
90
93
|
signing_key:
|