vagrant-lxc 0.3.3 → 0.3.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e016d9b9740eb13e9c7ea4a907b11b68985c4375
4
- data.tar.gz: 87be64028dec8c58df5d0ae1620f4dc6eccaab57
3
+ metadata.gz: c50dc38cceb25885011a091ace53495f0992bb45
4
+ data.tar.gz: d9e0c2cb8b70ff4a170d1744f438ffffcdaca199
5
5
  SHA512:
6
- metadata.gz: 3cb85194a618d8f52280ae67bb87be6a02c8fe69089ec0eb9858dbe34fad8328a11fbf21cc97378a1cb5cbd810191639b944f86329ace4289eb9dfecf1965e48
7
- data.tar.gz: 6aff2121764c2d6f9149c861949cd2148b429d3df03d7adf95c1fbf5499f878aa23ab34786b7f63c421f3f280d3a3c5fbb10d187d6cd90c712b9e35f77266e91
6
+ metadata.gz: a71590125708f5bdb688a46fc5e6d282e3acb49c9045946becb261a856b7f6a23b29b2bef25370c8d6bc9de23f765cf27f2e3e6a2e6442fe030dde5d8442fc31
7
+ data.tar.gz: 380309703b319c8eb6e91be92a8e2e1a09f28164d1076753667253ea9eb1a9b2b36ec11cffec8a1667d886cb32395ef2f5f44eab51c216e3a1e5bb66539cc45f
data/CHANGELOG.md CHANGED
@@ -1,8 +1,22 @@
1
+ ## [0.?.?](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.3...master)
2
+
3
+ FEATURES:
4
+
5
+ - Support for building Debian boxes (tks to @Val)
6
+ - Support for installing babushka on base boxes (tks to @Val)
7
+
8
+ IMPROVEMENTS:
9
+
10
+ - Remove `/tmp` files after the machine has been successfully shut down [#68][]
11
+ - Clean up base boxes files after they've been configured, resulting in smaller packages
12
+ - Bump development dependency to Vagrant 1.2+ series
13
+
1
14
  ## [0.3.3](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.2...v0.3.3) (April 23, 2013)
2
15
 
3
16
  BUG FIXES:
4
17
 
5
18
  - Properly kill `redir` child processes [#59][]
19
+ - Use `uname -m` on base Ubuntu lxc-template [#53][]
6
20
 
7
21
  IMPROVEMENTS:
8
22
 
data/Gemfile CHANGED
@@ -3,14 +3,11 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
- # We depend on Vagrant for development, but we don't add it as a
7
- # gem dependency because we expect to be installed within the
8
- # Vagrant environment itself using `vagrant plugin`.
9
- gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v1.1.5'
6
+ # TODO: Lock to 1.2.3 once it is out with this fix: https://github.com/mitchellh/vagrant/pull/1685
7
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
8
+ gem 'vagrant-cachier'
10
9
  gem 'guard'
11
10
  gem 'guard-rspec'
12
- gem 'guard-bundler'
13
- gem 'guard-ctags-bundler'
14
11
  gem 'rb-inotify'
15
12
  end
16
13
 
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  GIT
2
2
  remote: https://github.com/mitchellh/vagrant.git
3
- revision: 64e360814c3ad960d810456add977fd4c7d47ce6
4
- tag: v1.1.5
3
+ revision: ccfd321ef98dc5c12b180cc3a26f12d870c0eff5
5
4
  specs:
6
- vagrant (1.1.5)
5
+ vagrant (1.2.3.dev)
7
6
  childprocess (~> 0.3.7)
8
7
  erubis (~> 2.7.0)
9
8
  i18n (~> 0.6.0)
@@ -15,7 +14,7 @@ GIT
15
14
  PATH
16
15
  remote: .
17
16
  specs:
18
- vagrant-lxc (0.3.3)
17
+ vagrant-lxc (0.3.4)
19
18
 
20
19
  GEM
21
20
  remote: https://rubygems.org/
@@ -24,48 +23,49 @@ GEM
24
23
  ffi (~> 1.0, >= 1.0.11)
25
24
  coderay (1.0.9)
26
25
  colorize (0.5.8)
27
- coveralls (0.6.5)
26
+ coveralls (0.6.7)
28
27
  colorize
29
28
  multi_json (~> 1.3)
30
29
  rest-client
31
30
  simplecov (>= 0.7)
32
31
  thor
33
- diff-lcs (1.2.2)
32
+ diff-lcs (1.2.4)
34
33
  erubis (2.7.0)
35
- ffi (1.6.0)
34
+ ffi (1.8.1)
36
35
  formatador (0.2.4)
37
- guard (1.7.0)
36
+ guard (1.8.0)
38
37
  formatador (>= 0.2.4)
39
- listen (>= 0.6.0)
38
+ listen (>= 1.0.0)
40
39
  lumberjack (>= 1.0.2)
41
40
  pry (>= 0.9.10)
42
41
  thor (>= 0.14.6)
43
- guard-bundler (1.0.0)
44
- bundler (~> 1.0)
45
- guard (~> 1.1)
46
- guard-ctags-bundler (0.1.6)
47
- guard (>= 1.1)
48
- guard-rspec (2.5.2)
49
- guard (>= 1.1)
50
- rspec (~> 2.11)
42
+ guard-rspec (2.6.0)
43
+ guard (>= 1.8)
44
+ rspec (~> 2.13)
51
45
  i18n (0.6.4)
52
46
  json (1.7.7)
53
- listen (0.7.3)
47
+ listen (1.0.3)
48
+ rb-fsevent (>= 0.9.3)
49
+ rb-inotify (>= 0.9)
50
+ rb-kqueue (>= 0.2)
54
51
  log4r (1.1.10)
55
52
  lumberjack (1.0.3)
56
53
  method_source (0.8.1)
57
- mime-types (1.22)
58
- multi_json (1.7.2)
54
+ mime-types (1.23)
55
+ multi_json (1.7.3)
59
56
  net-scp (1.1.0)
60
57
  net-ssh (>= 2.6.5)
61
- net-ssh (2.6.6)
62
- pry (0.9.12)
58
+ net-ssh (2.6.7)
59
+ pry (0.9.12.1)
63
60
  coderay (~> 1.0.5)
64
61
  method_source (~> 0.8)
65
62
  slop (~> 3.4)
66
63
  rake (10.0.4)
64
+ rb-fsevent (0.9.3)
67
65
  rb-inotify (0.9.0)
68
66
  ffi (>= 0.5.0)
67
+ rb-kqueue (0.2.0)
68
+ ffi (>= 0.5.0)
69
69
  rest-client (1.6.7)
70
70
  mime-types (>= 1.16)
71
71
  rspec (2.13.0)
@@ -77,7 +77,7 @@ GEM
77
77
  diff-lcs (>= 1.1.3, < 2.0)
78
78
  rspec-fire (1.1.3)
79
79
  rspec (~> 2.11)
80
- rspec-mocks (2.13.0)
80
+ rspec-mocks (2.13.1)
81
81
  rspec-spies (2.1.4)
82
82
  rspec (~> 2.0)
83
83
  simplecov (0.7.1)
@@ -86,6 +86,7 @@ GEM
86
86
  simplecov-html (0.7.1)
87
87
  slop (3.4.4)
88
88
  thor (0.18.1)
89
+ vagrant-cachier (0.0.2)
89
90
 
90
91
  PLATFORMS
91
92
  ruby
@@ -93,8 +94,6 @@ PLATFORMS
93
94
  DEPENDENCIES
94
95
  coveralls
95
96
  guard
96
- guard-bundler
97
- guard-ctags-bundler
98
97
  guard-rspec
99
98
  rake
100
99
  rb-inotify
@@ -102,4 +101,5 @@ DEPENDENCIES
102
101
  rspec-fire
103
102
  rspec-spies
104
103
  vagrant!
104
+ vagrant-cachier
105
105
  vagrant-lxc!
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Linux Containers support for Vagrant 1.1+
4
4
 
5
+ Check out this [blog post](http://fabiorehm.com/blog/2013/04/28/lxc-provider-for-vagrant)
6
+ to see the plugin in action and find out more about it.
5
7
 
6
8
  ## Dependencies
7
9
 
@@ -21,42 +23,19 @@ sudo dpkg -i /tmp/vagrant.deb
21
23
  ```
22
24
 
23
25
 
24
- ## What is currently supported?
25
-
26
- Pretty much everything you need from Vagrant:
27
-
28
- * Vagrant's `up`, `halt`, `reload`, `destroy`, `ssh` and `package` commands (box packaging is kind of experimental)
29
- * Shared folders
30
- * Provisioning
31
- * Setting container's host name
32
- * Port forwarding
33
-
34
- *Please refer to the [closed issues](https://github.com/fgrehm/vagrant-lxc/issues?labels=&milestone=&page=1&state=closed)
35
- and the [changelog](CHANGELOG.md) for most up to date information.*
36
-
37
-
38
- ## Current limitations
39
-
40
- * Does not detect forwarded ports collision, right now you are responsible for taking care of that
41
- * A hell lot of `sudo`s (this will probably be like this until [user namespaces](http://s3hh.wordpress.com/2013/02/12/user-namespaces-lxc-meeting/) are supported)
42
- * [Does not tell you if dependencies are not met](https://github.com/fgrehm/vagrant-lxc/issues/11)
43
- (will probably just throw up some random error)
44
- * + bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
45
- and some known [bugs](https://github.com/fgrehm/vagrant-lxc/issues?labels=bug&page=1&state=open)
46
-
47
-
48
26
  ## Installation
49
27
 
50
28
  ```
51
29
  vagrant plugin install vagrant-lxc
52
30
  ```
53
31
 
32
+
54
33
  ## Usage
55
34
 
56
35
  After installing, add a [base box](#available-boxes) using any name you want, for example:
57
36
 
58
37
  ```
59
- vagrant box add lxc-quantal64 http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-04-21.box
38
+ vagrant box add lxc-quantal64 http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-05-06.box
60
39
  ```
61
40
 
62
41
  Make a Vagrantfile that looks like the following, filling in your information where necessary:
@@ -76,7 +55,8 @@ Vagrant.configure("2") do |config|
76
55
  end
77
56
  ```
78
57
 
79
- And finally run `vagrant up --provider=lxc`.
58
+ And finally run `vagrant up --provider=lxc`. If you are using Vagrant 1.2+ you can
59
+ also set `VAGRANT_DEFAULT_PROVIDER` environmental variable to `lxc`.
80
60
 
81
61
  If you are on a mac or window host and still want to try this plugin out, you
82
62
  can use the [same Vagrant VirtualBox machine I use for development](#using-virtualbox-for-development).
@@ -85,20 +65,28 @@ can use the [same Vagrant VirtualBox machine I use for development](#using-virtu
85
65
 
86
66
  | LINK | DESCRIPTION |
87
67
  | --- | --- |
88
- | [lxc-raring-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-raring-amd64-2013-04-21.box) | Ubuntu 13.04 Raring x86_64 (Puppet 3.1.1) |
89
- | [lxc-quantal-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-04-21.box) | Ubuntu 12.10 Quantal x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
90
- | [lxc-precise-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-precise-amd64-2013-04-21.box) | Ubuntu 12.04 Precise x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
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) |
91
74
 
92
75
  *Please note that I'm currently using only the quantal x86_64 on a daily basis,
93
76
  and I've only done some basic testing with the others*
94
77
 
95
- You can also build a clean box by providing `CHEF=0` and `PUPPET=0` to the available
96
- [rake tasks](tasks/boxes.rake). For example:
78
+ There is a set of [rake tasks](tasks/boxes.rake) that you can use to build base
79
+ boxes as needed. By default it won't include any provisioning tool and you can
80
+ pick the one you want by providing some environment variables.
81
+
82
+ For example:
97
83
 
98
84
  ```
99
- CHEF=0 PUPPET=0 rake boxes:ubuntu:build:precise64
85
+ CHEF=1 rake boxes:ubuntu:build:precise64
100
86
  ```
101
87
 
88
+ Will build a Ubuntu Precise x86_64 box with chef pre-installed.
89
+
102
90
  ### Storing container's rootfs on a separate partition
103
91
 
104
92
  Before the 0.3.0 version of this plugin, there used to be a support for specifying
@@ -112,6 +100,30 @@ NFS shared folders are not supported and will behave as a "normal" shared folder
112
100
  so we can share the same Vagrantfile with VBox environments.
113
101
 
114
102
 
103
+ ## What is currently supported?
104
+
105
+ Pretty much everything you need from Vagrant:
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.*
115
+
116
+
117
+ ## Current limitations
118
+
119
+ * Does not detect forwarded ports collision, right now you are responsible for taking care of that
120
+ * A hell lot of `sudo`s (this will probably be like this until [user namespaces](http://s3hh.wordpress.com/2013/02/12/user-namespaces-lxc-meeting/) are supported)
121
+ * [Does not tell you if dependencies are not met](https://github.com/fgrehm/vagrant-lxc/issues/11)
122
+ (will probably just throw up some random error)
123
+ * + bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
124
+ and some known [bugs](https://github.com/fgrehm/vagrant-lxc/issues?labels=bug&page=1&state=open)
125
+
126
+
115
127
  ## Development
116
128
 
117
129
  If want to develop from your physical machine, just sing that same old song:
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ cache=`readlink -f .`
4
+ rootfs="${cache}/rootfs"
5
+
6
+ rm -rf $rootfs/tmp/*
7
+ chroot $rootfs apt-get clean
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ cache=`readlink -f .`
4
+ rootfs="${cache}/rootfs"
5
+
6
+ echo "installing babushka"
7
+ cat > $rootfs/tmp/install-babushka.sh << EOF
8
+ #!/bin/sh
9
+ curl -L https://babushka.me/up | sudo bash < /dev/null
10
+
11
+ EOF
12
+ chmod +x $rootfs/tmp/install-babushka.sh
13
+ chroot $rootfs /tmp/install-babushka.sh
14
+
15
+ rm -rf $rootfs/tmp/*
File without changes
@@ -7,6 +7,6 @@ echo "installing puppet"
7
7
  wget http://apt.puppetlabs.com/puppetlabs-release-stable.deb -O "${rootfs}/tmp/puppetlabs-release-stable.deb"
8
8
  chroot $rootfs dpkg -i "/tmp/puppetlabs-release-stable.deb"
9
9
  chroot $rootfs apt-get update
10
- chroot $rootfs apt-get install puppet -y
10
+ chroot $rootfs apt-get install puppet -y --force-yes
11
11
 
12
12
  rm -rf $rootfs/tmp/*
@@ -0,0 +1,156 @@
1
+ #!/bin/bash
2
+
3
+ # This is the code extracted from /usr/share/lxc/templates/lxc-debian
4
+ # that comes with Ubuntu 13.04 which is responsible for downloading the
5
+ # rootfs files / packages
6
+
7
+ set -e
8
+
9
+ suggest_flush()
10
+ {
11
+ echo <<EOF
12
+ Container upgrade failed. The container cache may be out of date,
13
+ in which case flushing the case (see -F in the hep output) may help.
14
+ EOF
15
+ }
16
+
17
+ cleanup()
18
+ {
19
+ rm -rf $cache/partial
20
+ rm -rf $cache/rootfs
21
+ }
22
+
23
+ write_sourceslist()
24
+ {
25
+ rootfs=$1
26
+ arch=$2
27
+ release=$3
28
+
29
+ MIRROR=${MIRROR:-http://ftp.debian.org/debian}
30
+ SECURITY_MIRROR=${SECURITY_MIRROR:-http://security.debian.org/debian-security}
31
+
32
+
33
+ if [ 'sid' == "${release}" -o 'unstable' == "${release}" ]; then
34
+ cat <<EOF > ${rootfs}/etc/apt/sources.list
35
+ # ${release}
36
+ #------------------------------------------------------------------------------
37
+ deb ${MIRROR} ${release} main contrib non-free
38
+ EOF
39
+ else
40
+ cat <<EOF > ${rootfs}/etc/apt/sources.list
41
+ # ${release}
42
+ #------------------------------------------------------------------------------
43
+ deb ${MIRROR} ${release} main contrib non-free
44
+
45
+ # ${release} security
46
+ #------------------------------------------------------------------------------
47
+ deb ${SECURITY_MIRROR} ${release}/updates main contrib non-free
48
+
49
+ # ${release} updates
50
+ #------------------------------------------------------------------------------
51
+ deb ${MIRROR} ${release}-updates main contrib non-free
52
+
53
+ # ${release} proposed updates
54
+ #------------------------------------------------------------------------------
55
+ deb ${MIRROR} ${release}-proposed-updates main contrib non-free
56
+ EOF
57
+ fi
58
+ }
59
+
60
+ download_debian()
61
+ {
62
+ cache=$1
63
+ arch=$2
64
+ release=$3
65
+
66
+ packages=\
67
+ sudo,\
68
+ ifupdown,\
69
+ locales,\
70
+ libui-dialog-perl,\
71
+ dialog,\
72
+ isc-dhcp-client,\
73
+ netbase,\
74
+ net-tools,\
75
+ iproute,\
76
+ openssh-server,\
77
+ vim,\
78
+ jed,\
79
+ jed-extra,\
80
+ ssh,\
81
+ curl,\
82
+ wget,\
83
+ bash-completion,\
84
+ manpages,\
85
+ man-db,\
86
+ psmisc,\
87
+ bind9-host,\
88
+ telnet,\
89
+ mtr-tiny,\
90
+ iputils-ping,\
91
+ ca-certificates
92
+
93
+ if [ ! -z "${ADDITIONAL_PACKAGES}" ]; then
94
+ packages=${ADDITIONAL_PACKAGES},${packages}
95
+ fi
96
+
97
+ echo "installing packages: ${packages}"
98
+
99
+ trap cleanup EXIT SIGHUP SIGINT SIGTERM
100
+ # check the mini debian was not already downloaded
101
+ partial=${cache}/partial
102
+ mkdir -p ${partial}
103
+ if [ $? -ne 0 ]; then
104
+ echo "Failed to create '${partial}' directory"
105
+ return 1
106
+ fi
107
+
108
+ # download a mini debian into a cache
109
+ echo "Downloading debian ${release} minimal ..."
110
+ debootstrap \
111
+ --variant=minbase \
112
+ --verbose \
113
+ --components=main,contrib,non-free \
114
+ --arch=${arch} \
115
+ --include=${packages} ${release} ${partial} ${MIRROR}
116
+
117
+ if [ $? -ne 0 ]; then
118
+ echo 'Failed to download the rootfs, aborting.'
119
+ return 1
120
+ fi
121
+
122
+ echo 'Installing updates'
123
+ write_sourceslist ${partial} ${arch} ${release}
124
+
125
+ chroot ${partial} apt-get update
126
+ if [ $? -ne 0 ]; then
127
+ echo 'Failed to update the apt cache'
128
+ return 1
129
+ fi
130
+
131
+ lxc-unshare -s MOUNT -- chroot ${partial} \
132
+ apt-get dist-upgrade -y || { suggest_flush; false; }
133
+
134
+ chroot ${partial} apt-get clean
135
+
136
+ mv ${partial} ${cache}/rootfs
137
+ trap EXIT
138
+ trap SIGINT
139
+ trap SIGTERM
140
+ trap SIGHUP
141
+ echo 'Download complete'
142
+ return 0
143
+ }
144
+
145
+ declare cache=`readlink -f .` \
146
+ arch=$1 \
147
+ release=$2
148
+
149
+ if [ -d ${cache}/rootfs ]; then
150
+ echo <<EOF
151
+ The rootfs cache has been built already, please remove it if you want to update
152
+ EOF
153
+ exit 1
154
+ fi
155
+
156
+ download_debian ${cache} ${arch} ${release}