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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70552f58b3dff461e6c8f585b581fcbe48eb8e33
|
4
|
+
data.tar.gz: 1e83aa6c65f3c3d82f78902db6def724fe13c262
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9c31869f568c381c36b49f5a2653d1479cb4598bb58c8b277afdd7e35b09f7db5613a493fe8eac58761cc23cc4dea52f93286a2883b3917fd59bbaaf8e29ee4
|
7
|
+
data.tar.gz: c82b8cb7240620f0d7e23e7969d73f16cf35752ef8044927de2fe3a027cf864cdb0b8819844bb6ace0d9f0afcc70dc07f1598db43b5f3d2707827e9af542e577
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,19 @@
|
|
1
|
-
## [0
|
1
|
+
## [0.4.0](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.4...master) (unreleased)
|
2
|
+
|
3
|
+
FEATURES:
|
4
|
+
|
5
|
+
- New box format [#89](https://github.com/fgrehm/vagrant-lxc/issues/89)
|
6
|
+
|
7
|
+
BUG FIXES:
|
8
|
+
|
9
|
+
- Add translation for stopped status [#97](https://github.com/fgrehm/vagrant-lxc/issues/97)
|
10
|
+
- Enable retries when fetching container state [#74](https://github.com/fgrehm/vagrant-lxc/issues/74)
|
11
|
+
- Fix error when setting Debian boxes hostname from Vagrantfile [#91](https://github.com/fgrehm/vagrant-lxc/issues/91)
|
12
|
+
- BTRFS-friendly base boxes [#81](https://github.com/fgrehm/vagrant-lxc/issues/81)
|
13
|
+
- Extended templates path lookup [#77](https://github.com/fgrehm/vagrant-lxc/issues/77) (tks to @aries1980)
|
14
|
+
- Fix default group for packaged boxes tarballs on the rake task [#82](https://github.com/fgrehm/vagrant-lxc/issues/82) (tks to @cduez)
|
15
|
+
|
16
|
+
## [0.3.4](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.3...v0.3.4) (May 08, 2013)
|
2
17
|
|
3
18
|
FEATURES:
|
4
19
|
|
@@ -7,16 +22,21 @@ FEATURES:
|
|
7
22
|
|
8
23
|
IMPROVEMENTS:
|
9
24
|
|
10
|
-
-
|
25
|
+
- Replace `lxc-wait` usage with a "[retry mechanism](https://github.com/fgrehm/vagrant-lxc/commit/3cca16824879731315dac32bc2df1c643f30d461#L2R88)" [#22](https://github.com/fgrehm/vagrant-lxc/issues/22)
|
26
|
+
- Remove `/tmp` files after the machine has been successfully shut down [#68](https://github.com/fgrehm/vagrant-lxc/issues/68)
|
11
27
|
- Clean up base boxes files after they've been configured, resulting in smaller packages
|
12
28
|
- Bump development dependency to Vagrant 1.2+ series
|
13
29
|
|
30
|
+
BUG FIXES:
|
31
|
+
|
32
|
+
- Issue a `lxc-stop` in case the container cannot shutdown gracefully [#72](https://github.com/fgrehm/vagrant-lxc/issues/72)
|
33
|
+
|
14
34
|
## [0.3.3](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.2...v0.3.3) (April 23, 2013)
|
15
35
|
|
16
36
|
BUG FIXES:
|
17
37
|
|
18
|
-
- Properly kill `redir` child processes [#59]
|
19
|
-
- Use `uname -m` on base Ubuntu lxc-template [#53]
|
38
|
+
- Properly kill `redir` child processes [#59](https://github.com/fgrehm/vagrant-lxc/issues/59)
|
39
|
+
- Use `uname -m` on base Ubuntu lxc-template [#53](https://github.com/fgrehm/vagrant-lxc/issues/53)
|
20
40
|
|
21
41
|
IMPROVEMENTS:
|
22
42
|
|
@@ -39,20 +59,20 @@ BACKWARDS INCOMPATIBILITIES:
|
|
39
59
|
- `start_opts` config was renamed to `customize`, please check the README for the expected parameters
|
40
60
|
- V1 boxes are no longer supported
|
41
61
|
- `target_rootfs_path` is no longer supported, just symlink `/var/lib/lxc` to the desired folder in case you want to point it to another partition
|
42
|
-
- Removed support for configuring private networks. It will come back at some point in the future but if you need it you should be able to set using `customize 'network.ipv4', '1.2.3.4'`
|
62
|
+
- Removed support for configuring private networks. It will come back at some point in the future but if you need it you should be able to set using `customize 'network.ipv4', '1.2.3.4/24'`
|
43
63
|
|
44
64
|
IMPROVEMENTS:
|
45
65
|
|
46
66
|
- lxc templates are removed from lxc template dir after container is created
|
47
67
|
- Treat NFS shared folders as a normal shared folder instead of ignoring it so we can share the same Vagrantfile with VBox environments
|
48
|
-
- Support for lxc 0.7.5 (tested on Ubuntu 12.04) [#49]
|
49
|
-
- Remove `/tmp` files when packaging quantal64 base box [#48]
|
50
|
-
- Avoid picking the best mirror on quantal64 base box [#38]
|
68
|
+
- Support for lxc 0.7.5 (tested on Ubuntu 12.04) [#49](https://github.com/fgrehm/vagrant-lxc/issues/49)
|
69
|
+
- Remove `/tmp` files when packaging quantal64 base box [#48](https://github.com/fgrehm/vagrant-lxc/issues/48)
|
70
|
+
- Avoid picking the best mirror on quantal64 base box [#38](https://github.com/fgrehm/vagrant-lxc/issues/38)
|
51
71
|
|
52
72
|
BUG FIXES:
|
53
73
|
|
54
|
-
- Redirect `redir`'s stderr output to `/dev/null` [#51]
|
55
|
-
- Switch from `ifconfig` to `ip` to grab container's IP to avoid localization issues [#50]
|
74
|
+
- Redirect `redir`'s stderr output to `/dev/null` [#51](https://github.com/fgrehm/vagrant-lxc/issues/51)
|
75
|
+
- Switch from `ifconfig` to `ip` to grab container's IP to avoid localization issues [#50](https://github.com/fgrehm/vagrant-lxc/issues/50)
|
56
76
|
|
57
77
|
## [0.2.0](https://github.com/fgrehm/vagrant-lxc/compare/v0.1.1...v0.2.0) (March 30, 2013)
|
58
78
|
|
@@ -61,16 +81,16 @@ BUG FIXES:
|
|
61
81
|
## [0.1.1](https://github.com/fgrehm/vagrant-lxc/compare/v0.1.0...v0.1.1) (March 29, 2013)
|
62
82
|
|
63
83
|
- Removed support for development under Vagrant < 1.1
|
64
|
-
- Removed rsync from base quantal64 box to speed up containers creation [#40]
|
65
|
-
- Containers are now named after project's root dir [#14]
|
84
|
+
- Removed rsync from base quantal64 box to speed up containers creation [#40](https://github.com/fgrehm/vagrant-lxc/issues/40)
|
85
|
+
- Containers are now named after project's root dir [#14](https://github.com/fgrehm/vagrant-lxc/issues/14)
|
66
86
|
- Skip Vagrant's built in SSH redirect
|
67
|
-
- Allow setting rootfs from Vagrantfile [#30]
|
87
|
+
- Allow setting rootfs from Vagrantfile [#30](https://github.com/fgrehm/vagrant-lxc/issues/30)
|
68
88
|
|
69
89
|
## [0.1.0](https://github.com/fgrehm/vagrant-lxc/compare/v0.0.3...v0.1.0) (March 27, 2013)
|
70
90
|
|
71
91
|
- Support for chef added to base quantal64 box
|
72
92
|
- Puppet upgraded to 3.1.1 on base quantal64 box
|
73
|
-
- Port forwarding support added [#6]
|
93
|
+
- Port forwarding support added [#6](https://github.com/fgrehm/vagrant-lxc/issues/6)
|
74
94
|
|
75
95
|
## Previous
|
76
96
|
|
data/Gemfile
CHANGED
@@ -3,9 +3,10 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
|
7
|
-
gem 'vagrant',
|
8
|
-
gem 'vagrant-
|
6
|
+
gem 'vagrant', github: 'mitchellh/vagrant'
|
7
|
+
gem 'vagrant-cachier', github: 'fgrehm/vagrant-cachier'
|
8
|
+
gem 'vagrant-pristine', github: 'fgrehm/vagrant-pristine'
|
9
|
+
gem 'vagrant-omnibus'
|
9
10
|
gem 'guard'
|
10
11
|
gem 'guard-rspec'
|
11
12
|
gem 'rb-inotify'
|
@@ -14,7 +15,7 @@ end
|
|
14
15
|
|
15
16
|
group :development, :test do
|
16
17
|
gem 'rake'
|
17
|
-
gem 'rspec'
|
18
|
+
gem 'rspec', '~> 2.13.0'
|
18
19
|
gem 'rspec-fire', require: 'rspec/fire'
|
19
20
|
gem 'rspec-spies', require: false
|
20
21
|
gem 'coveralls', require: false
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,23 @@
|
|
1
1
|
GIT
|
2
|
-
remote:
|
3
|
-
revision:
|
2
|
+
remote: git://github.com/fgrehm/vagrant-cachier.git
|
3
|
+
revision: ae6cb5bcfbdbb2157867d77ded8f2b6f430c0f6c
|
4
4
|
specs:
|
5
|
-
vagrant (
|
5
|
+
vagrant-cachier (0.2.0)
|
6
|
+
|
7
|
+
GIT
|
8
|
+
remote: git://github.com/fgrehm/vagrant-pristine.git
|
9
|
+
revision: 45a8d75f048bd611e337583496eb2b48b6998bbd
|
10
|
+
specs:
|
11
|
+
vagrant-pristine (0.1.0)
|
12
|
+
|
13
|
+
GIT
|
14
|
+
remote: git://github.com/mitchellh/vagrant.git
|
15
|
+
revision: 6d26c86c4c3f65e2e59f4dda6bca9cd9235de704
|
16
|
+
specs:
|
17
|
+
vagrant (1.2.4.dev)
|
6
18
|
childprocess (~> 0.3.7)
|
7
19
|
erubis (~> 2.7.0)
|
8
20
|
i18n (~> 0.6.0)
|
9
|
-
json (>= 1.5.1, < 1.8.0)
|
10
21
|
log4r (~> 1.1.9)
|
11
22
|
net-scp (~> 1.1.0)
|
12
23
|
net-ssh (~> 2.6.6)
|
@@ -14,7 +25,7 @@ GIT
|
|
14
25
|
PATH
|
15
26
|
remote: .
|
16
27
|
specs:
|
17
|
-
vagrant-lxc (0.
|
28
|
+
vagrant-lxc (0.4.0)
|
18
29
|
|
19
30
|
GEM
|
20
31
|
remote: https://rubygems.org/
|
@@ -31,36 +42,35 @@ GEM
|
|
31
42
|
thor
|
32
43
|
diff-lcs (1.2.4)
|
33
44
|
erubis (2.7.0)
|
34
|
-
ffi (1.
|
45
|
+
ffi (1.9.0)
|
35
46
|
formatador (0.2.4)
|
36
|
-
guard (1.8.
|
47
|
+
guard (1.8.1)
|
37
48
|
formatador (>= 0.2.4)
|
38
49
|
listen (>= 1.0.0)
|
39
50
|
lumberjack (>= 1.0.2)
|
40
51
|
pry (>= 0.9.10)
|
41
52
|
thor (>= 0.14.6)
|
42
|
-
guard-rspec (
|
53
|
+
guard-rspec (3.0.2)
|
43
54
|
guard (>= 1.8)
|
44
55
|
rspec (~> 2.13)
|
45
56
|
i18n (0.6.4)
|
46
|
-
|
47
|
-
listen (1.0.3)
|
57
|
+
listen (1.2.2)
|
48
58
|
rb-fsevent (>= 0.9.3)
|
49
59
|
rb-inotify (>= 0.9)
|
50
60
|
rb-kqueue (>= 0.2)
|
51
61
|
log4r (1.1.10)
|
52
|
-
lumberjack (1.0.
|
62
|
+
lumberjack (1.0.4)
|
53
63
|
method_source (0.8.1)
|
54
64
|
mime-types (1.23)
|
55
|
-
multi_json (1.7.
|
56
|
-
net-scp (1.1.
|
65
|
+
multi_json (1.7.7)
|
66
|
+
net-scp (1.1.2)
|
57
67
|
net-ssh (>= 2.6.5)
|
58
|
-
net-ssh (2.6.
|
59
|
-
pry (0.9.12.
|
68
|
+
net-ssh (2.6.8)
|
69
|
+
pry (0.9.12.2)
|
60
70
|
coderay (~> 1.0.5)
|
61
71
|
method_source (~> 0.8)
|
62
72
|
slop (~> 3.4)
|
63
|
-
rake (10.0
|
73
|
+
rake (10.1.0)
|
64
74
|
rb-fsevent (0.9.3)
|
65
75
|
rb-inotify (0.9.0)
|
66
76
|
ffi (>= 0.5.0)
|
@@ -75,7 +85,7 @@ GEM
|
|
75
85
|
rspec-core (2.13.1)
|
76
86
|
rspec-expectations (2.13.0)
|
77
87
|
diff-lcs (>= 1.1.3, < 2.0)
|
78
|
-
rspec-fire (1.
|
88
|
+
rspec-fire (1.2.0)
|
79
89
|
rspec (~> 2.11)
|
80
90
|
rspec-mocks (2.13.1)
|
81
91
|
rspec-spies (2.1.4)
|
@@ -84,9 +94,9 @@ GEM
|
|
84
94
|
multi_json (~> 1.0)
|
85
95
|
simplecov-html (~> 0.7.1)
|
86
96
|
simplecov-html (0.7.1)
|
87
|
-
slop (3.4.
|
97
|
+
slop (3.4.5)
|
88
98
|
thor (0.18.1)
|
89
|
-
vagrant-
|
99
|
+
vagrant-omnibus (1.1.0)
|
90
100
|
|
91
101
|
PLATFORMS
|
92
102
|
ruby
|
@@ -97,9 +107,11 @@ DEPENDENCIES
|
|
97
107
|
guard-rspec
|
98
108
|
rake
|
99
109
|
rb-inotify
|
100
|
-
rspec
|
110
|
+
rspec (~> 2.13.0)
|
101
111
|
rspec-fire
|
102
112
|
rspec-spies
|
103
113
|
vagrant!
|
104
|
-
vagrant-cachier
|
114
|
+
vagrant-cachier!
|
105
115
|
vagrant-lxc!
|
116
|
+
vagrant-omnibus
|
117
|
+
vagrant-pristine!
|
data/Guardfile
CHANGED
@@ -1,18 +1,7 @@
|
|
1
|
-
guard '
|
2
|
-
watch(
|
3
|
-
watch(/^.+\.gemspec/)
|
4
|
-
end
|
5
|
-
|
6
|
-
guard 'ctags-bundler', :src_path => ["lib"] do
|
7
|
-
watch(/^(lib|spec\/support)\/.*\.rb$/)
|
8
|
-
watch('Gemfile.lock')
|
9
|
-
end
|
10
|
-
|
11
|
-
guard 'rspec' do
|
12
|
-
watch(%r{^spec/.+_spec\.rb$})
|
1
|
+
guard 'rspec', :spec_paths => ["spec/unit"] do
|
2
|
+
watch(%r{^spec/unit/.+_spec\.rb$})
|
13
3
|
watch(%r{^lib/vagrant-lxc/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
14
4
|
watch('spec/unit_helper.rb') { "spec/unit" }
|
15
|
-
watch('spec/
|
16
|
-
watch(
|
17
|
-
watch(%r{^spec/support/(.+)\.rb$}) { "spec/" }
|
5
|
+
watch('spec/spec_helper.rb') { "spec/unit" }
|
6
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec/unit" }
|
18
7
|
end
|
data/README.md
CHANGED
@@ -1,26 +1,46 @@
|
|
1
|
-
# vagrant-lxc
|
1
|
+
# vagrant-lxc
|
2
2
|
|
3
|
-
|
3
|
+
[![Build Status](https://travis-ci.org/fgrehm/vagrant-lxc.png?branch=master)](https://travis-ci.org/fgrehm/vagrant-lxc) [![Gem Version](https://badge.fury.io/rb/vagrant-lxc.png)](http://badge.fury.io/rb/vagrant-lxc) [![Code Climate](https://codeclimate.com/github/fgrehm/vagrant-lxc.png)](https://codeclimate.com/github/fgrehm/vagrant-lxc) [![Coverage Status](https://coveralls.io/repos/fgrehm/vagrant-lxc/badge.png?branch=master)](https://coveralls.io/r/fgrehm/vagrant-lxc)
|
4
|
+
|
5
|
+
[LXC](http://lxc.sourceforge.net/) provider for [Vagrant](http://www.vagrantup.com/) 1.1+
|
6
|
+
|
7
|
+
This is a Vagrant plugin that allows it to control and provision Linux Containers
|
8
|
+
as an alternative to the built in Vagrant VirtualBox provider for Linux hosts.
|
4
9
|
|
5
10
|
Check out this [blog post](http://fabiorehm.com/blog/2013/04/28/lxc-provider-for-vagrant)
|
6
11
|
to see the plugin in action and find out more about it.
|
7
12
|
|
8
|
-
##
|
13
|
+
## Features
|
14
|
+
|
15
|
+
* Vagrant's `up`, `halt`, `reload`, `destroy`, `ssh`, `provision` and `package`
|
16
|
+
* Shared folders
|
17
|
+
* Provisioning with any built-in Vagrant provisioner
|
18
|
+
* Port forwarding
|
19
|
+
* Setting container's host name
|
20
|
+
|
21
|
+
*Please refer to the [closed issues](https://github.com/fgrehm/vagrant-lxc/issues?labels=&milestone=&page=1&state=closed)
|
22
|
+
and the [changelog](CHANGELOG.md) for most up to date information.*
|
9
23
|
|
10
|
-
|
11
|
-
|
24
|
+
|
25
|
+
## Requirements
|
26
|
+
|
27
|
+
* [Vagrant 1.1+](http://downloads.vagrantup.com/)
|
28
|
+
* lxc 0.7.5+
|
12
29
|
* redir (if you are planning to use port forwarding)
|
13
|
-
* A
|
30
|
+
* A [bug-free](#help-im-unable-to-restart-containers) kernel
|
14
31
|
|
15
|
-
|
32
|
+
The plugin is known to work better and pretty much out of the box on Ubuntu 12.04+
|
33
|
+
hosts and installing the dependencies on it basically means a `apt-get install lxc redir`
|
34
|
+
and a `apt-get update && apt-get dist-upgrade` to upgrade the kernel.
|
16
35
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
36
|
+
Some manual steps are required to set up a Linode machine prior to using this
|
37
|
+
plugin, please check https://github.com/fgrehm/vagrant-lxc/wiki/Usage-on-Linode
|
38
|
+
for more information. The same applies to Debian hosts and documentation will be
|
39
|
+
provided soon.
|
40
|
+
|
41
|
+
If you are on a Mac or Windows machine, you might want to have a look at this
|
42
|
+
blog post for some ideas on how to set things up: http://the.taoofmac.com/space/HOWTO/Vagrant
|
43
|
+
or use use the same [Ubuntu 12.10 VirtualBox machine I use for development](https://github.com/fgrehm/vagrant-lxc/wiki/Development#using-virtualbox-for-development).
|
24
44
|
|
25
45
|
|
26
46
|
## Installation
|
@@ -32,185 +52,82 @@ vagrant plugin install vagrant-lxc
|
|
32
52
|
|
33
53
|
## Usage
|
34
54
|
|
35
|
-
After installing, add a [base box](#
|
55
|
+
After installing, add a [base box](#base-boxes) using any name you want, for example:
|
36
56
|
|
37
57
|
```
|
38
|
-
vagrant box add
|
58
|
+
vagrant box add quantal64 http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-07-12.box
|
39
59
|
```
|
40
60
|
|
41
|
-
|
61
|
+
Then create a Vagrantfile that looks like the following, changing the box name
|
62
|
+
to the one you've just added:
|
42
63
|
|
43
64
|
```ruby
|
44
65
|
Vagrant.configure("2") do |config|
|
45
|
-
|
46
|
-
config.vm.box = "lxc-quantal64"
|
47
|
-
|
48
|
-
# You can omit this block if you don't need to override any container setting
|
49
|
-
config.vm.provider :lxc do |lxc|
|
50
|
-
# OPTIONAL: Same effect as as 'customize ["modifyvm", :id, "--memory", "1024"]' for VirtualBox
|
51
|
-
lxc.customize 'cgroup.memory.limit_in_bytes', '1024M'
|
52
|
-
# OPTIONAL: Limits swap size
|
53
|
-
lxc.customize 'cgroup.memory.memsw.limit_in_bytes', '512M'
|
54
|
-
end
|
66
|
+
config.vm.box = "quantal64"
|
55
67
|
end
|
56
68
|
```
|
57
69
|
|
58
|
-
And finally run `vagrant up --provider=lxc`.
|
59
|
-
also set `VAGRANT_DEFAULT_PROVIDER` environmental variable to `lxc`.
|
60
|
-
|
61
|
-
If you are on a mac or window host and still want to try this plugin out, you
|
62
|
-
can use the [same Vagrant VirtualBox machine I use for development](#using-virtualbox-for-development).
|
70
|
+
And finally run `vagrant up --provider=lxc`.
|
63
71
|
|
64
|
-
|
72
|
+
If you are using Vagrant 1.2+ you can also set `VAGRANT_DEFAULT_PROVIDER`
|
73
|
+
environmental variable to `lxc` in order to avoid typing `--provider=lxc` all
|
74
|
+
the time.
|
65
75
|
|
66
|
-
| LINK | DESCRIPTION |
|
67
|
-
| --- | --- |
|
68
|
-
| [lxc-raring-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-raring-amd64-2013-05-08.box) | Ubuntu 13.04 Raring x86_64 (Puppet 3.1.1) |
|
69
|
-
| [lxc-quantal-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-05-08.box) | Ubuntu 12.10 Quantal x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
|
70
|
-
| [lxc-precise-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-precise-amd64-2013-05-08.box) | Ubuntu 12.04 Precise x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
|
71
|
-
| [lxc-sid-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-sid-amd64-2013-05-08.box) | Debian Sid (Puppet 3.1.1) |
|
72
|
-
| [lxc-wheezy-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-wheezy-amd64-2013-05-08.box) | Debian Wheezy (Puppet 3.1.1) |
|
73
|
-
| [lxc-squeeze-amd64-2013-05-08.box](http://dl.dropbox.com/u/13510779/lxc-squeeze-amd64-2013-05-08.box) | Debian Squeeze (Puppet 3.1.1) |
|
74
76
|
|
75
|
-
|
76
|
-
and I've only done some basic testing with the others*
|
77
|
+
### Advanced configuration
|
77
78
|
|
78
|
-
|
79
|
-
|
80
|
-
pick the one you want by providing some environment variables.
|
79
|
+
If you want, you can modify container configurations from within your Vagrantfile
|
80
|
+
using the [provider block](http://docs.vagrantup.com/v2/providers/configuration.html):
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
```ruby
|
83
|
+
Vagrant.configure("2") do |config|
|
84
|
+
config.vm.box = "quantal64"
|
85
|
+
config.vm.provider :lxc do |lxc|
|
86
|
+
# Same effect as as 'customize ["modifyvm", :id, "--memory", "1024"]' for VirtualBox
|
87
|
+
lxc.customize 'cgroup.memory.limit_in_bytes', '1024M'
|
88
|
+
end
|
89
|
+
end
|
86
90
|
```
|
87
91
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
Before the 0.3.0 version of this plugin, there used to be a support for specifying
|
93
|
-
the container's rootfs path from the `Vagrantfile`, on 0.3.0 this was removed as you
|
94
|
-
can achieve the same effect by symlinking or mounting `/var/lib/lxc` on a separate
|
95
|
-
partition.
|
92
|
+
This will make vagrant-lxc pass in `-s lxc.cgroup.memory.limit_in_bytes=1024M`
|
93
|
+
to `lxc-start` when booting containers. This will override any previously value
|
94
|
+
set from container's configuration file that is usually kept under
|
95
|
+
`/var/lib/lxc/<container-name>/config`.
|
96
96
|
|
97
|
-
|
97
|
+
For other configuration options, please check [lxc.conf manpages](http://manpages.ubuntu.com/manpages/quantal/man5/lxc.conf.5.html).
|
98
98
|
|
99
|
-
NFS shared folders are not supported and will behave as a "normal" shared folder
|
100
|
-
so we can share the same Vagrantfile with VBox environments.
|
101
99
|
|
100
|
+
### Base boxes
|
102
101
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
* Vagrant's `up`, `halt`, `reload`, `destroy`, `ssh` and `package` commands (box packaging is kind of experimental)
|
108
|
-
* Shared folders
|
109
|
-
* Provisioning
|
110
|
-
* Setting container's host name
|
111
|
-
* Port forwarding
|
112
|
-
|
113
|
-
*Please refer to the [closed issues](https://github.com/fgrehm/vagrant-lxc/issues?labels=&milestone=&page=1&state=closed)
|
114
|
-
and the [changelog](CHANGELOG.md) for most up to date information.*
|
102
|
+
Please check [the wiki](https://github.com/fgrehm/vagrant-lxc/wiki/Base-boxes)
|
103
|
+
for a list of [pre built](https://github.com/fgrehm/vagrant-lxc/wiki/Base-boxes#available-boxes)
|
104
|
+
base boxes and information on [how to build your own](https://github.com/fgrehm/vagrant-lxc/wiki/Base-boxes#building-your-own).
|
115
105
|
|
116
106
|
|
117
107
|
## Current limitations
|
118
108
|
|
119
|
-
*
|
120
|
-
|
109
|
+
* The plugin does not detect forwarded ports collision, right now you are
|
110
|
+
responsible for taking care of that.
|
111
|
+
* There is a hell lot of `sudo`s involved and this will probably be around until
|
112
|
+
[user namespaces](https://wiki.ubuntu.com/LxcSecurity) are supported or I'm able to handle [#90](https://github.com/fgrehm/vagrant-lxc/issues/90)
|
121
113
|
* [Does not tell you if dependencies are not met](https://github.com/fgrehm/vagrant-lxc/issues/11)
|
122
114
|
(will probably just throw up some random error)
|
123
115
|
* + bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
|
124
116
|
and some known [bugs](https://github.com/fgrehm/vagrant-lxc/issues?labels=bug&page=1&state=open)
|
125
117
|
|
126
118
|
|
127
|
-
##
|
128
|
-
|
129
|
-
If want to develop from your physical machine, just sing that same old song:
|
130
|
-
|
131
|
-
```
|
132
|
-
git clone git://github.com/fgrehm/vagrant-lxc.git
|
133
|
-
cd vagrant-lxc
|
134
|
-
bundle install
|
135
|
-
bundle exec rake # to run unit specs
|
136
|
-
```
|
137
|
-
|
138
|
-
To run acceptance specs, you'll have to ssh into one of the [development boxes](development/Vagrantfile) and run:
|
139
|
-
|
140
|
-
```
|
141
|
-
bundle exec rake spec:acceptance
|
142
|
-
```
|
143
|
-
|
144
|
-
To build the provided quantal64 box:
|
145
|
-
|
146
|
-
```
|
147
|
-
bundle exec rake boxes:quantal64:build
|
148
|
-
vagrant box add quantal64 boxes/output/lxc-quantal64.box
|
149
|
-
```
|
150
|
-
|
151
|
-
### Using `vagrant-lxc` to develop itself
|
152
|
-
|
153
|
-
Yes! The gem has been [bootstrapped](http://en.wikipedia.org/wiki/Bootstrapping_(compilers)
|
154
|
-
and since you can boot a container from within another, after cloning the
|
155
|
-
project you can run the commands below from the host machine to get a container
|
156
|
-
ready for development:
|
157
|
-
|
158
|
-
```sh
|
159
|
-
# Required in order to allow nested containers to be started
|
160
|
-
sudo apt-get install apparmor-utils
|
161
|
-
sudo aa-complain /usr/bin/lxc-start
|
162
|
-
bundle install
|
163
|
-
cd development
|
164
|
-
bundle exec vagrant up lxc --provider=lxc
|
165
|
-
bundle exec vagrant ssh lxc
|
166
|
-
```
|
167
|
-
|
168
|
-
That should result in a container ready to be `bundle exec vagrant ssh`ed.
|
169
|
-
Once you've SSH into the guest container, you'll be already on the project's root.
|
170
|
-
Keep in mind that you'll probably need to run `sudo aa-complain /usr/bin/lxc-start`
|
171
|
-
on the host whenever you want to hack on it, otherwise you won't be able to
|
172
|
-
start nested containers there to try things out.
|
173
|
-
|
174
|
-
### Using VirtualBox for development
|
175
|
-
|
176
|
-
```
|
177
|
-
cd development
|
178
|
-
bundle exec vagrant up vbox
|
179
|
-
# A reload is needed to ensure the updated kernel gets loaded
|
180
|
-
bundle exec vagrant reload vbox
|
181
|
-
bundle exec vagrant ssh vbox
|
182
|
-
```
|
183
|
-
|
184
|
-
|
185
|
-
## Protips
|
186
|
-
|
187
|
-
If you want to find out more about what's going on under the hood on vagrant,
|
188
|
-
prepend `VAGRANT_LOG=debug` to your `vagrant` commands. For `lxc-start`s
|
189
|
-
debugging set `LXC_START_LOG_FILE`:
|
190
|
-
|
191
|
-
```
|
192
|
-
LXC_START_LOG_FILE=/tmp/lxc-start.log VAGRANT_LOG=debug vagrant up
|
193
|
-
```
|
194
|
-
|
195
|
-
This will output A LOT of information on your terminal and some useful information
|
196
|
-
about `lxc-start` to `/tmp/lxc-start.log`.
|
119
|
+
## More information
|
197
120
|
|
121
|
+
Please refer the [wiki](https://github.com/fgrehm/vagrant-lxc/wiki) for more
|
122
|
+
information.
|
198
123
|
|
199
|
-
## Help! I'm unable to restart containers!
|
200
124
|
|
201
|
-
|
202
|
-
to a bug on linux kernel, so make sure you are using a bug-free kernel
|
203
|
-
(>= 3.5.0-17.28). More information can be found on:
|
125
|
+
## Problems / ideas?
|
204
126
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
Sometimes the dev boxes I'm using are not able to `lxc-start` containers
|
210
|
-
anymore. Most of the times it was an issue with the arguments I provided
|
211
|
-
to it for customization (or a *buggy* kernel). If you run into that, rollback your changes
|
212
|
-
and try to `vagrant reload` the dev box. If it still doesn't work,
|
213
|
-
please file a bug at the [issue tracker](https://github.com/fgrehm/vagrant-lxc/issues).
|
127
|
+
Please review the [Troubleshooting](https://github.com/fgrehm/vagrant-lxc/wiki/Troubleshooting)
|
128
|
+
wiki page + [known bugs](https://github.com/fgrehm/vagrant-lxc/issues?labels=bug&page=1&state=open)
|
129
|
+
list if you have a problem and feel free to use the [issue tracker](https://github.com/fgrehm/vagrant-lxc/issues)
|
130
|
+
to ask questions, propose new functionality and / or report bugs.
|
214
131
|
|
215
132
|
|
216
133
|
## Similar projects
|
@@ -218,6 +135,7 @@ please file a bug at the [issue tracker](https://github.com/fgrehm/vagrant-lxc/i
|
|
218
135
|
* [vagabond](https://github.com/chrisroberts/vagabond) - "a tool integrated with Chef to build local nodes easily"
|
219
136
|
* [vagueant](https://github.com/neerolyte/vagueant) - "vaguely like Vagrant for linux containers (lxc)"
|
220
137
|
|
138
|
+
|
221
139
|
## Contributing
|
222
140
|
|
223
141
|
1. Fork it
|