vagrant-lxc 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -14
- data/Gemfile +5 -4
- data/Gemfile.lock +33 -21
- data/Guardfile +4 -15
- data/README.md +76 -158
- data/boxes/common/lxc-template +229 -0
- data/boxes/common/lxc.conf +49 -0
- data/boxes/common/metadata.json +4 -0
- data/boxes/debian/finalize +195 -0
- data/boxes/debian/lxc-template +13 -9
- data/boxes/ubuntu/finalize +368 -0
- data/boxes/ubuntu/lxc-template +1 -2
- data/development/Vagrantfile +10 -6
- data/development/site.pp +1 -1
- data/example/Vagrantfile +13 -22
- data/lib/vagrant-lxc/action/boot.rb +2 -0
- data/lib/vagrant-lxc/action/create.rb +1 -0
- data/lib/vagrant-lxc/action/handle_box_metadata.rb +15 -2
- data/lib/vagrant-lxc/action/setup_package_files.rb +3 -0
- data/lib/vagrant-lxc/driver.rb +4 -2
- data/lib/vagrant-lxc/driver/cli.rb +7 -2
- data/lib/vagrant-lxc/errors.rb +2 -2
- data/lib/vagrant-lxc/version.rb +1 -1
- data/locales/en.yml +9 -1
- data/spec/Vagrantfile +1 -4
- data/spec/acceptance/sanity_check_spec.rb +1 -4
- data/spec/unit/action/clear_forwarded_ports_spec.rb +4 -3
- data/spec/unit/action/compress_rootfs_spec.rb +5 -5
- data/spec/unit/action/forward_ports_spec.rb +5 -5
- data/spec/unit/action/handle_box_metadata_spec.rb +5 -5
- data/spec/unit/action/setup_package_files_spec.rb +32 -14
- data/spec/unit/driver/cli_spec.rb +4 -2
- data/spec/unit/driver_spec.rb +13 -11
- data/tasks/boxes.rake +26 -96
- data/tasks/boxes.v2.rake +181 -0
- metadata +8 -2
data/spec/unit/driver_spec.rb
CHANGED
@@ -9,24 +9,24 @@ describe Vagrant::LXC::Driver do
|
|
9
9
|
let(:unknown_container) { described_class.new('unknown', cli) }
|
10
10
|
let(:valid_container) { described_class.new('valid', cli) }
|
11
11
|
let(:new_container) { described_class.new(nil) }
|
12
|
-
let(:cli) {
|
12
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', list: ['valid']) }
|
13
13
|
|
14
14
|
it 'raises a ContainerNotFound error if an unknown container name gets provided' do
|
15
15
|
expect {
|
16
16
|
unknown_container.validate!
|
17
|
-
}.to raise_error
|
17
|
+
}.to raise_error
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does not raise a ContainerNotFound error if a valid container name gets provided' do
|
21
21
|
expect {
|
22
22
|
valid_container.validate!
|
23
|
-
}.
|
23
|
+
}.not_to raise_error
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'does not raise a ContainerNotFound error if nil is provider as name' do
|
27
27
|
expect {
|
28
28
|
new_container.validate!
|
29
|
-
}.
|
29
|
+
}.not_to raise_error
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -35,14 +35,15 @@ describe Vagrant::LXC::Driver do
|
|
35
35
|
let(:template_name) { 'auto-assigned-template-id' }
|
36
36
|
let(:template_path) { '/path/to/lxc-template-from-box' }
|
37
37
|
let(:template_opts) { {'--some' => 'random-option'} }
|
38
|
+
let(:config_file) { '/path/to/lxc-config-from-box' }
|
38
39
|
let(:rootfs_tarball) { '/path/to/cache/rootfs.tar.gz' }
|
39
|
-
let(:cli) {
|
40
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', :create => true, :name= => true) }
|
40
41
|
|
41
42
|
subject { described_class.new(nil, cli) }
|
42
43
|
|
43
44
|
before do
|
44
45
|
subject.stub(:import_template).and_yield(template_name)
|
45
|
-
subject.create name, template_path, template_opts
|
46
|
+
subject.create name, template_path, config_file, template_opts
|
46
47
|
end
|
47
48
|
|
48
49
|
it 'sets the cli object container name' do
|
@@ -52,13 +53,14 @@ describe Vagrant::LXC::Driver do
|
|
52
53
|
it 'creates container with the right arguments' do
|
53
54
|
cli.should have_received(:create).with(
|
54
55
|
template_name,
|
56
|
+
config_file,
|
55
57
|
template_opts
|
56
58
|
)
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
62
|
describe 'destruction' do
|
61
|
-
let(:cli) {
|
63
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', destroy: true) }
|
62
64
|
|
63
65
|
subject { described_class.new('name', cli) }
|
64
66
|
|
@@ -72,7 +74,7 @@ describe Vagrant::LXC::Driver do
|
|
72
74
|
describe 'start' do
|
73
75
|
let(:customizations) { [['a', '1'], ['b', '2']] }
|
74
76
|
let(:internal_customization) { ['internal', 'customization'] }
|
75
|
-
let(:cli) {
|
77
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', start: true) }
|
76
78
|
|
77
79
|
subject { described_class.new('name', cli) }
|
78
80
|
|
@@ -92,7 +94,7 @@ describe Vagrant::LXC::Driver do
|
|
92
94
|
end
|
93
95
|
|
94
96
|
describe 'halt' do
|
95
|
-
let(:cli) {
|
97
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', shutdown: true) }
|
96
98
|
|
97
99
|
subject { described_class.new('name', cli) }
|
98
100
|
|
@@ -120,7 +122,7 @@ describe Vagrant::LXC::Driver do
|
|
120
122
|
|
121
123
|
describe 'state' do
|
122
124
|
let(:cli_state) { :something }
|
123
|
-
let(:cli) {
|
125
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', state: cli_state) }
|
124
126
|
|
125
127
|
subject { described_class.new('name', cli) }
|
126
128
|
|
@@ -133,7 +135,7 @@ describe Vagrant::LXC::Driver do
|
|
133
135
|
# This ip is set on the sample-ip-addr-output fixture
|
134
136
|
let(:ip) { "10.0.254.137" }
|
135
137
|
let(:ifconfig_output) { File.read('spec/fixtures/sample-ip-addr-output') }
|
136
|
-
let(:cli) {
|
138
|
+
let(:cli) { instance_double('Vagrant::LXC::Driver::CLI', :attach => ifconfig_output) }
|
137
139
|
|
138
140
|
subject { described_class.new('name', cli) }
|
139
141
|
|
data/tasks/boxes.rake
CHANGED
@@ -1,50 +1,11 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'rake/tasklib'
|
3
|
+
load 'tasks/boxes.v2.rake'
|
3
4
|
|
4
|
-
class
|
5
|
-
include ::Rake::DSL
|
6
|
-
|
7
|
-
attr_reader :name
|
8
|
-
|
9
|
-
def initialize(name, distrib, release, arch, opts = {})
|
10
|
-
@name = name
|
11
|
-
@distrib = distrib
|
12
|
-
@release = release.to_s
|
13
|
-
@arch = arch.to_s
|
14
|
-
@install_chef = opts.fetch(:chef, true)
|
15
|
-
@install_puppet = opts.fetch(:puppet, true)
|
16
|
-
@install_babushka = opts.fetch(:babushka, true)
|
17
|
-
@file = opts[:file] || default_box_file
|
18
|
-
@scripts_path = Pathname(Dir.pwd).join('boxes')
|
19
|
-
|
20
|
-
desc "Build an #{distrib.upcase} #{release} #{arch} box" unless
|
21
|
-
::Rake.application.last_comment
|
22
|
-
task name do
|
23
|
-
RakeFileUtils.send(:verbose, true) do
|
24
|
-
build
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def default_box_file
|
30
|
-
require 'time'
|
31
|
-
"lxc-#{@release}-#{@arch}-#{Date.today}.box"
|
32
|
-
end
|
33
|
-
|
34
|
-
def run(script_name, *args)
|
35
|
-
unless (script = @scripts_path.join(@distrib, script_name)).readable?
|
36
|
-
script = @scripts_path.join('common', script_name)
|
37
|
-
end
|
38
|
-
|
39
|
-
if script.readable?
|
40
|
-
sh "sudo #{script} #{args.join(' ')}"
|
41
|
-
else
|
42
|
-
STDERR.puts "cannot execute #{install_path} (not found?)"
|
43
|
-
exit 1
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
5
|
+
class BuildGenericBoxTaskV3 < BuildGenericBoxTaskV2
|
47
6
|
def build
|
7
|
+
require 'vagrant'
|
8
|
+
|
48
9
|
check_if_box_has_been_built!
|
49
10
|
|
50
11
|
FileUtils.mkdir_p 'boxes/temp' unless File.exist? 'base/temp'
|
@@ -55,6 +16,7 @@ class BuildGenericBoxTask < ::Rake::TaskLib
|
|
55
16
|
Dir.chdir 'boxes/temp' do
|
56
17
|
download
|
57
18
|
install_cfg_engines
|
19
|
+
finalize
|
58
20
|
prepare_package_contents pwd
|
59
21
|
sh 'sudo rm -rf rootfs'
|
60
22
|
sh "tar -czf tmp-package.box ./*"
|
@@ -65,64 +27,34 @@ class BuildGenericBoxTask < ::Rake::TaskLib
|
|
65
27
|
sh "rm -rf boxes/temp"
|
66
28
|
end
|
67
29
|
|
68
|
-
def
|
69
|
-
|
70
|
-
|
71
|
-
puts 'Box has been built already!'
|
72
|
-
exit 1
|
73
|
-
end
|
74
|
-
|
75
|
-
def check_for_partially_built_box!
|
76
|
-
return unless Dir.entries('boxes/temp').size > 2
|
77
|
-
|
78
|
-
puts 'There is a partially built box under ' +
|
79
|
-
File.expand_path('./boxes/temp') +
|
80
|
-
', please remove it before building a new box'
|
81
|
-
exit 1
|
82
|
-
end
|
83
|
-
|
84
|
-
def download
|
85
|
-
run 'download', @arch, @release
|
86
|
-
end
|
87
|
-
|
88
|
-
def install_cfg_engines
|
89
|
-
[ :puppet, :chef, :babushka ].each do |cfg_engine|
|
90
|
-
next unless instance_variable_get :"@install_#{cfg_engine}"
|
91
|
-
script_name = "install-#{cfg_engine}"
|
92
|
-
run script_name
|
93
|
-
end
|
30
|
+
def finalize
|
31
|
+
auth_key = Vagrant.source_root.join('keys', 'vagrant.pub').expand_path.to_s
|
32
|
+
run 'finalize', @arch, @release, auth_key
|
94
33
|
end
|
95
34
|
|
96
35
|
def prepare_package_contents(pwd)
|
97
36
|
run 'cleanup'
|
98
37
|
sh 'sudo rm -f rootfs.tar.gz'
|
99
38
|
sh 'sudo tar --numeric-owner -czf rootfs.tar.gz ./rootfs/*'
|
100
|
-
sh "sudo chown #{ENV['USER']}:#{
|
101
|
-
sh "cp #{pwd}/boxes
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
def compile_metadata(pwd)
|
106
|
-
metadata = File.read("#{pwd}/boxes/#{@distrib}/metadata.json.template")
|
107
|
-
metadata.gsub!('ARCH', @arch)
|
108
|
-
metadata.gsub!('RELEASE', @release)
|
109
|
-
File.open('metadata.json', 'w') { |f| f.print metadata }
|
39
|
+
sh "sudo chown #{ENV['USER']}:#{`id -gn`.strip} rootfs.tar.gz"
|
40
|
+
sh "cp #{pwd}/boxes/common/lxc-template ."
|
41
|
+
sh "cp #{pwd}/boxes/common/lxc.conf ."
|
42
|
+
sh "cp #{pwd}/boxes/common/metadata.json ."
|
110
43
|
end
|
111
44
|
end
|
112
45
|
|
113
|
-
class
|
46
|
+
class BuildDebianBoxTaskV3 < BuildGenericBoxTaskV3
|
114
47
|
def initialize(name, release, arch, opts = {})
|
115
48
|
super(name, 'debian', release, arch, opts)
|
116
49
|
end
|
117
50
|
end
|
118
51
|
|
119
|
-
class
|
52
|
+
class BuildUbuntuBoxTaskV3 < BuildGenericBoxTaskV3
|
120
53
|
def initialize(name, release, arch, opts = {})
|
121
54
|
super(name, 'ubuntu', release, arch, opts)
|
122
55
|
end
|
123
56
|
end
|
124
57
|
|
125
|
-
chef = ENV['CHEF'] == '1'
|
126
58
|
puppet = ENV['PUPPET'] == '1'
|
127
59
|
babushka = ENV['BABUSHKA'] == '1'
|
128
60
|
|
@@ -131,43 +63,41 @@ namespace :boxes do
|
|
131
63
|
namespace :build do
|
132
64
|
|
133
65
|
desc 'Build an Ubuntu Precise 64 bits box'
|
134
|
-
|
66
|
+
BuildUbuntuBoxTaskV3.
|
135
67
|
new(:precise64,
|
136
|
-
:precise, 'amd64',
|
68
|
+
:precise, 'amd64', puppet: puppet, babushka: babushka)
|
137
69
|
|
138
70
|
desc 'Build an Ubuntu Quantal 64 bits box'
|
139
|
-
|
71
|
+
BuildUbuntuBoxTaskV3.
|
140
72
|
new(:quantal64,
|
141
|
-
:quantal, 'amd64',
|
73
|
+
:quantal, 'amd64', puppet: puppet, babushka: babushka)
|
142
74
|
|
143
|
-
# FIXME: Find out how to install chef on raring
|
144
75
|
desc 'Build an Ubuntu Raring 64 bits box'
|
145
|
-
|
76
|
+
BuildUbuntuBoxTaskV3.
|
146
77
|
new(:raring64,
|
147
|
-
:raring, 'amd64',
|
78
|
+
:raring, 'amd64', puppet: puppet, babushka: babushka)
|
148
79
|
|
149
80
|
desc 'Build all Ubuntu boxes'
|
150
81
|
task :all => %w( precise64 quantal64 raring64 )
|
151
82
|
end
|
152
83
|
end
|
153
84
|
|
154
|
-
# FIXME: Find out how to install chef on debian boxes
|
155
85
|
namespace :debian do
|
156
86
|
namespace :build do
|
157
87
|
desc 'Build an Debian Squeeze 64 bits box'
|
158
|
-
|
88
|
+
BuildDebianBoxTaskV3.
|
159
89
|
new(:squeeze64,
|
160
|
-
:squeeze, 'amd64',
|
90
|
+
:squeeze, 'amd64', puppet: puppet, babushka: babushka)
|
161
91
|
|
162
92
|
desc 'Build an Debian Wheezy 64 bits box'
|
163
|
-
|
93
|
+
BuildDebianBoxTaskV3.
|
164
94
|
new(:wheezy64,
|
165
|
-
:wheezy, 'amd64',
|
95
|
+
:wheezy, 'amd64', puppet: puppet, babushka: babushka)
|
166
96
|
|
167
97
|
desc 'Build an Debian Sid/unstable 64 bits box'
|
168
|
-
|
98
|
+
BuildDebianBoxTaskV3.
|
169
99
|
new(:sid64,
|
170
|
-
:sid, 'amd64',
|
100
|
+
:sid, 'amd64', puppet: puppet, babushka: babushka)
|
171
101
|
|
172
102
|
desc 'Build all Debian boxes'
|
173
103
|
task :all => %w( squeeze64 wheezy64 sid64 )
|
data/tasks/boxes.v2.rake
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'rake/tasklib'
|
3
|
+
|
4
|
+
class BuildGenericBoxTaskV2 < ::Rake::TaskLib
|
5
|
+
include ::Rake::DSL
|
6
|
+
|
7
|
+
attr_reader :name
|
8
|
+
|
9
|
+
def initialize(name, distrib, release, arch, opts = {})
|
10
|
+
@name = name
|
11
|
+
@distrib = distrib
|
12
|
+
@release = release.to_s
|
13
|
+
@arch = arch.to_s
|
14
|
+
@install_chef = opts.fetch(:chef, false)
|
15
|
+
@install_puppet = opts.fetch(:puppet, true)
|
16
|
+
@install_babushka = opts.fetch(:babushka, true)
|
17
|
+
@file = opts[:file] || default_box_file
|
18
|
+
@scripts_path = Pathname(Dir.pwd).join('boxes')
|
19
|
+
|
20
|
+
desc "Build an #{distrib.upcase} #{release} #{arch} box" unless
|
21
|
+
::Rake.application.last_comment
|
22
|
+
task name do
|
23
|
+
RakeFileUtils.send(:verbose, true) do
|
24
|
+
build
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def default_box_file
|
30
|
+
require 'time'
|
31
|
+
"lxc-#{@release}-#{@arch}-#{Date.today}.box"
|
32
|
+
end
|
33
|
+
|
34
|
+
def run(script_name, *args)
|
35
|
+
unless (script = @scripts_path.join(@distrib, script_name)).readable?
|
36
|
+
script = @scripts_path.join('common', script_name)
|
37
|
+
end
|
38
|
+
|
39
|
+
if script.readable?
|
40
|
+
sh "sudo #{script} #{args.join(' ')}"
|
41
|
+
else
|
42
|
+
STDERR.puts "cannot execute #{script_name} (not found?)"
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def build
|
48
|
+
check_if_box_has_been_built!
|
49
|
+
|
50
|
+
FileUtils.mkdir_p 'boxes/temp' unless File.exist? 'base/temp'
|
51
|
+
check_for_partially_built_box!
|
52
|
+
|
53
|
+
pwd = Dir.pwd
|
54
|
+
sh 'mkdir -p boxes/temp/'
|
55
|
+
Dir.chdir 'boxes/temp' do
|
56
|
+
download
|
57
|
+
install_cfg_engines
|
58
|
+
prepare_package_contents pwd
|
59
|
+
sh 'sudo rm -rf rootfs'
|
60
|
+
sh "tar -czf tmp-package.box ./*"
|
61
|
+
end
|
62
|
+
|
63
|
+
sh 'mkdir -p boxes/output'
|
64
|
+
sh "cp boxes/temp/tmp-package.box boxes/output/#{@file}"
|
65
|
+
sh "rm -rf boxes/temp"
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_if_box_has_been_built!
|
69
|
+
return unless File.exists?("./boxes/output/#{@file}")
|
70
|
+
|
71
|
+
puts 'Box has been built already!'
|
72
|
+
exit 1
|
73
|
+
end
|
74
|
+
|
75
|
+
def check_for_partially_built_box!
|
76
|
+
return unless Dir.entries('boxes/temp').size > 2
|
77
|
+
|
78
|
+
puts 'There is a partially built box under ' +
|
79
|
+
File.expand_path('./boxes/temp') +
|
80
|
+
', please remove it before building a new box'
|
81
|
+
exit 1
|
82
|
+
end
|
83
|
+
|
84
|
+
def download
|
85
|
+
run 'download', @arch, @release
|
86
|
+
end
|
87
|
+
|
88
|
+
def install_cfg_engines
|
89
|
+
[ :puppet, :chef, :babushka ].each do |cfg_engine|
|
90
|
+
next unless instance_variable_get :"@install_#{cfg_engine}"
|
91
|
+
script_name = "install-#{cfg_engine}"
|
92
|
+
run script_name
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def prepare_package_contents(pwd)
|
97
|
+
run 'cleanup'
|
98
|
+
sh 'sudo rm -f rootfs.tar.gz'
|
99
|
+
sh 'sudo tar --numeric-owner -czf rootfs.tar.gz ./rootfs/*'
|
100
|
+
sh "sudo chown #{ENV['USER']}:#{`id -gn`.strip} rootfs.tar.gz"
|
101
|
+
sh "cp #{pwd}/boxes/#{@distrib}/lxc-template ."
|
102
|
+
compile_metadata(pwd)
|
103
|
+
end
|
104
|
+
|
105
|
+
def compile_metadata(pwd)
|
106
|
+
metadata = File.read("#{pwd}/boxes/#{@distrib}/metadata.json.template")
|
107
|
+
metadata.gsub!('ARCH', @arch)
|
108
|
+
metadata.gsub!('RELEASE', @release)
|
109
|
+
File.open('metadata.json', 'w') { |f| f.print metadata }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
class BuildDebianBoxTaskV2 < BuildGenericBoxTaskV2
|
114
|
+
def initialize(name, release, arch, opts = {})
|
115
|
+
super(name, 'debian', release, arch, opts)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class BuildUbuntuBoxTaskV2 < BuildGenericBoxTaskV2
|
120
|
+
def initialize(name, release, arch, opts = {})
|
121
|
+
super(name, 'ubuntu', release, arch, opts)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
chef = ENV['CHEF'] == '1'
|
126
|
+
puppet = ENV['PUPPET'] == '1'
|
127
|
+
babushka = ENV['BABUSHKA'] == '1'
|
128
|
+
|
129
|
+
namespace :boxes do
|
130
|
+
namespace :v2 do
|
131
|
+
namespace :ubuntu do
|
132
|
+
namespace :build do
|
133
|
+
|
134
|
+
desc 'Build an Ubuntu Precise 64 bits box'
|
135
|
+
BuildUbuntuBoxTaskV2.
|
136
|
+
new(:precise64,
|
137
|
+
:precise, 'amd64', chef: chef, puppet: puppet, babushka: babushka)
|
138
|
+
|
139
|
+
desc 'Build an Ubuntu Quantal 64 bits box'
|
140
|
+
BuildUbuntuBoxTaskV2.
|
141
|
+
new(:quantal64,
|
142
|
+
:quantal, 'amd64', chef: chef, puppet: puppet, babushka: babushka)
|
143
|
+
|
144
|
+
# FIXME: Find out how to install chef on raring
|
145
|
+
desc 'Build an Ubuntu Raring 64 bits box'
|
146
|
+
BuildUbuntuBoxTaskV2.
|
147
|
+
new(:raring64,
|
148
|
+
:raring, 'amd64', chef: chef, puppet: puppet, babushka: babushka)
|
149
|
+
|
150
|
+
desc 'Build all Ubuntu boxes'
|
151
|
+
task :all => %w( precise64 quantal64 raring64 )
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# FIXME: Find out how to install chef on debian boxes
|
156
|
+
namespace :debian do
|
157
|
+
namespace :build do
|
158
|
+
desc 'Build an Debian Squeeze 64 bits box'
|
159
|
+
BuildDebianBoxTaskV2.
|
160
|
+
new(:squeeze64,
|
161
|
+
:squeeze, 'amd64', chef: false, puppet: puppet, babushka: babushka)
|
162
|
+
|
163
|
+
desc 'Build an Debian Wheezy 64 bits box'
|
164
|
+
BuildDebianBoxTaskV2.
|
165
|
+
new(:wheezy64,
|
166
|
+
:wheezy, 'amd64', chef: false, puppet: puppet, babushka: babushka)
|
167
|
+
|
168
|
+
desc 'Build an Debian Sid/unstable 64 bits box'
|
169
|
+
BuildDebianBoxTaskV2.
|
170
|
+
new(:sid64,
|
171
|
+
:sid, 'amd64', chef: false, puppet: puppet, babushka: babushka)
|
172
|
+
|
173
|
+
desc 'Build all Debian boxes'
|
174
|
+
task :all => %w( squeeze64 wheezy64 sid64 )
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
desc 'Build all base boxes for release'
|
179
|
+
task :build_all => %w( ubuntu:build:all debian:build:all )
|
180
|
+
end
|
181
|
+
end
|