vagrant-lxc 0.3.4 → 0.4.0
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 +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
@@ -0,0 +1,229 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# This is a modified version of /usr/share/lxc/templates/lxc-ubuntu
|
4
|
+
# that comes with Ubuntu 13.04 changed to suit vagrant-lxc needs
|
5
|
+
|
6
|
+
#
|
7
|
+
# template script for generating ubuntu container for LXC
|
8
|
+
#
|
9
|
+
# This script consolidates and extends the existing lxc ubuntu scripts
|
10
|
+
#
|
11
|
+
|
12
|
+
# Copyright © 2011 Serge Hallyn <serge.hallyn@canonical.com>
|
13
|
+
# Copyright © 2010 Wilhelm Meier
|
14
|
+
# Author: Wilhelm Meier <wilhelm.meier@fh-kl.de>
|
15
|
+
#
|
16
|
+
# This program is free software; you can redistribute it and/or modify
|
17
|
+
# it under the terms of the GNU General Public License version 2, as
|
18
|
+
# published by the Free Software Foundation.
|
19
|
+
|
20
|
+
# This program is distributed in the hope that it will be useful,
|
21
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23
|
+
# GNU General Public License for more details.
|
24
|
+
|
25
|
+
# You should have received a copy of the GNU General Public License along
|
26
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
27
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
28
|
+
#
|
29
|
+
|
30
|
+
set -e
|
31
|
+
|
32
|
+
if [ -r /etc/default/lxc ]; then
|
33
|
+
. /etc/default/lxc
|
34
|
+
fi
|
35
|
+
|
36
|
+
extract_rootfs()
|
37
|
+
{
|
38
|
+
tarball=$1
|
39
|
+
arch=$2
|
40
|
+
rootfs=$3
|
41
|
+
|
42
|
+
echo "Extracting $tarball ..."
|
43
|
+
mkdir -p $(dirname $rootfs)
|
44
|
+
(cd `dirname $rootfs` && tar xfz $tarball)
|
45
|
+
return 0
|
46
|
+
}
|
47
|
+
|
48
|
+
install_ubuntu()
|
49
|
+
{
|
50
|
+
rootfs=$1
|
51
|
+
release=$2
|
52
|
+
tarball=$3
|
53
|
+
mkdir -p /var/lock/subsys/
|
54
|
+
|
55
|
+
(
|
56
|
+
flock -x 200
|
57
|
+
if [ $? -ne 0 ]; then
|
58
|
+
echo "Cache repository is busy."
|
59
|
+
return 1
|
60
|
+
fi
|
61
|
+
|
62
|
+
extract_rootfs $tarball $arch $rootfs
|
63
|
+
if [ $? -ne 0 ]; then
|
64
|
+
echo "Failed to copy rootfs"
|
65
|
+
return 1
|
66
|
+
fi
|
67
|
+
|
68
|
+
return 0
|
69
|
+
|
70
|
+
) 200>/var/lock/subsys/lxc
|
71
|
+
|
72
|
+
return $?
|
73
|
+
}
|
74
|
+
|
75
|
+
copy_configuration()
|
76
|
+
{
|
77
|
+
path=$1
|
78
|
+
rootfs=$2
|
79
|
+
name=$3
|
80
|
+
|
81
|
+
grep -q "^lxc.rootfs" $path/config 2>/dev/null || echo "lxc.rootfs = $rootfs" >> $path/config
|
82
|
+
|
83
|
+
# if there is exactly one veth network entry, make sure it has an
|
84
|
+
# associated hwaddr.
|
85
|
+
nics=`grep -e '^lxc\.network\.type[ \t]*=[ \t]*veth' $path/config | wc -l`
|
86
|
+
if [ $nics -eq 1 ]; then
|
87
|
+
grep -q "^lxc.network.hwaddr" $path/config || sed -i -e "/^lxc\.network\.type[ \t]*=[ \t]*veth/a lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')" $path/config
|
88
|
+
fi
|
89
|
+
|
90
|
+
if [ $? -ne 0 ]; then
|
91
|
+
echo "Failed to add configuration"
|
92
|
+
return 1
|
93
|
+
fi
|
94
|
+
|
95
|
+
return 0
|
96
|
+
}
|
97
|
+
|
98
|
+
post_process()
|
99
|
+
{
|
100
|
+
rootfs=$1
|
101
|
+
|
102
|
+
# rmdir /dev/shm for containers that have /run/shm
|
103
|
+
# I'm afraid of doing rm -rf $rootfs/dev/shm, in case it did
|
104
|
+
# get bind mounted to the host's /run/shm. So try to rmdir
|
105
|
+
# it, and in case that fails move it out of the way.
|
106
|
+
if [ ! -L $rootfs/dev/shm ] && [ -d $rootfs/run/shm ] && [ -e $rootfs/dev/shm ]; then
|
107
|
+
mv $rootfs/dev/shm $rootfs/dev/shm.bak
|
108
|
+
ln -s /run/shm $rootfs/dev/shm
|
109
|
+
fi
|
110
|
+
}
|
111
|
+
|
112
|
+
usage()
|
113
|
+
{
|
114
|
+
cat <<EOF
|
115
|
+
$1 -h|--help [-a|--arch] [--trim] [-d|--debug]
|
116
|
+
[-F | --flush-cache] [-r|--release <release>] [ -S | --auth-key <keyfile>]
|
117
|
+
release: the ubuntu release (e.g. precise): defaults to host release on ubuntu, otherwise uses latest LTS
|
118
|
+
trim: make a minimal (faster, but not upgrade-safe) container
|
119
|
+
arch: the container architecture (e.g. amd64): defaults to host arch
|
120
|
+
auth-key: SSH Public key file to inject into container
|
121
|
+
EOF
|
122
|
+
return 0
|
123
|
+
}
|
124
|
+
|
125
|
+
options=$(getopt -o a:b:hp:r:xn:FS:d:C -l arch:,help,path:,release:,trim,name:,flush-cache,auth-key:,debug:,tarball: -- "$@")
|
126
|
+
if [ $? -ne 0 ]; then
|
127
|
+
usage $(basename $0)
|
128
|
+
exit 1
|
129
|
+
fi
|
130
|
+
eval set -- "$options"
|
131
|
+
|
132
|
+
release=precise # Default to the last Ubuntu LTS release for non-Ubuntu systems
|
133
|
+
if [ -f /etc/lsb-release ]; then
|
134
|
+
. /etc/lsb-release
|
135
|
+
if [ "$DISTRIB_ID" = "Ubuntu" ]; then
|
136
|
+
release=$DISTRIB_CODENAME
|
137
|
+
fi
|
138
|
+
fi
|
139
|
+
|
140
|
+
arch=$(uname -m)
|
141
|
+
|
142
|
+
# Code taken from debootstrap
|
143
|
+
if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
|
144
|
+
arch=`/usr/bin/dpkg --print-architecture`
|
145
|
+
elif type udpkg >/dev/null 2>&1 && udpkg --print-architecture >/dev/null 2>&1; then
|
146
|
+
arch=`/usr/bin/udpkg --print-architecture`
|
147
|
+
else
|
148
|
+
arch=$(uname -m)
|
149
|
+
if [ "$arch" = "i686" ]; then
|
150
|
+
arch="i386"
|
151
|
+
elif [ "$arch" = "x86_64" ]; then
|
152
|
+
arch="amd64"
|
153
|
+
elif [ "$arch" = "armv7l" ]; then
|
154
|
+
arch="armel"
|
155
|
+
fi
|
156
|
+
fi
|
157
|
+
|
158
|
+
debug=0
|
159
|
+
trim_container=0
|
160
|
+
hostarch=$arch
|
161
|
+
while true
|
162
|
+
do
|
163
|
+
case "$1" in
|
164
|
+
-h|--help) usage $0 && exit 0;;
|
165
|
+
-p|--path) path=$2; shift 2;;
|
166
|
+
-n|--name) name=$2; shift 2;;
|
167
|
+
-T|--tarball) tarball=$2; shift 2;;
|
168
|
+
-r|--release) release=$2; shift 2;;
|
169
|
+
-a|--arch) arch=$2; shift 2;;
|
170
|
+
-x|--trim) trim_container=1; shift 1;;
|
171
|
+
-S|--auth-key) auth_key=$2; shift 2;;
|
172
|
+
-d|--debug) debug=1; shift 1;;
|
173
|
+
--) shift 1; break ;;
|
174
|
+
*) break ;;
|
175
|
+
esac
|
176
|
+
done
|
177
|
+
|
178
|
+
if [ $debug -eq 1 ]; then
|
179
|
+
set -x
|
180
|
+
fi
|
181
|
+
|
182
|
+
|
183
|
+
if [ "$arch" == "i686" ]; then
|
184
|
+
arch=i386
|
185
|
+
fi
|
186
|
+
|
187
|
+
if [ $hostarch = "i386" -a $arch = "amd64" ]; then
|
188
|
+
echo "can't create amd64 container on i386"
|
189
|
+
exit 1
|
190
|
+
fi
|
191
|
+
|
192
|
+
if [ -z "$path" ]; then
|
193
|
+
echo "'path' parameter is required"
|
194
|
+
exit 1
|
195
|
+
fi
|
196
|
+
|
197
|
+
if [ "$(id -u)" != "0" ]; then
|
198
|
+
echo "This script should be run as 'root'"
|
199
|
+
exit 1
|
200
|
+
fi
|
201
|
+
|
202
|
+
# detect rootfs
|
203
|
+
config="$path/config"
|
204
|
+
if grep -q '^lxc.rootfs' $config 2>/dev/null ; then
|
205
|
+
rootfs=`grep 'lxc.rootfs =' $config | awk -F= '{ print $2 }'`
|
206
|
+
else
|
207
|
+
rootfs=$path/rootfs
|
208
|
+
fi
|
209
|
+
|
210
|
+
install_ubuntu $rootfs $release $tarball
|
211
|
+
if [ $? -ne 0 ]; then
|
212
|
+
echo "failed to install ubuntu $release"
|
213
|
+
exit 1
|
214
|
+
fi
|
215
|
+
|
216
|
+
copy_configuration $path $rootfs $name $arch
|
217
|
+
if [ $? -ne 0 ]; then
|
218
|
+
echo "failed write configuration file"
|
219
|
+
exit 1
|
220
|
+
fi
|
221
|
+
|
222
|
+
post_process $rootfs $release $trim_container
|
223
|
+
|
224
|
+
echo ""
|
225
|
+
echo "##"
|
226
|
+
echo "# The default user is 'vagrant' with password 'vagrant'!"
|
227
|
+
echo "# Use the 'sudo' command to run tasks as root in the container."
|
228
|
+
echo "##"
|
229
|
+
echo ""
|
@@ -0,0 +1,49 @@
|
|
1
|
+
lxc.network.type=veth
|
2
|
+
lxc.network.link=lxcbr0
|
3
|
+
lxc.network.flags=up
|
4
|
+
|
5
|
+
lxc.pivotdir = lxc_putold
|
6
|
+
|
7
|
+
lxc.devttydir = lxc
|
8
|
+
lxc.tty = 4
|
9
|
+
lxc.pts = 1024
|
10
|
+
|
11
|
+
lxc.arch = amd64
|
12
|
+
lxc.cap.drop = sys_module mac_admin mac_override
|
13
|
+
|
14
|
+
# When using LXC with apparmor, uncomment the next line to run unconfined:
|
15
|
+
#lxc.aa_profile = unconfined
|
16
|
+
|
17
|
+
lxc.cgroup.devices.deny = a
|
18
|
+
# Allow any mknod (but not using the node)
|
19
|
+
lxc.cgroup.devices.allow = c *:* m
|
20
|
+
lxc.cgroup.devices.allow = b *:* m
|
21
|
+
# /dev/null and zero
|
22
|
+
lxc.cgroup.devices.allow = c 1:3 rwm
|
23
|
+
lxc.cgroup.devices.allow = c 1:5 rwm
|
24
|
+
# consoles
|
25
|
+
lxc.cgroup.devices.allow = c 5:1 rwm
|
26
|
+
lxc.cgroup.devices.allow = c 5:0 rwm
|
27
|
+
#lxc.cgroup.devices.allow = c 4:0 rwm
|
28
|
+
#lxc.cgroup.devices.allow = c 4:1 rwm
|
29
|
+
# /dev/{,u}random
|
30
|
+
lxc.cgroup.devices.allow = c 1:9 rwm
|
31
|
+
lxc.cgroup.devices.allow = c 1:8 rwm
|
32
|
+
lxc.cgroup.devices.allow = c 136:* rwm
|
33
|
+
lxc.cgroup.devices.allow = c 5:2 rwm
|
34
|
+
# rtc
|
35
|
+
lxc.cgroup.devices.allow = c 254:0 rwm
|
36
|
+
#fuse
|
37
|
+
lxc.cgroup.devices.allow = c 10:229 rwm
|
38
|
+
#tun
|
39
|
+
lxc.cgroup.devices.allow = c 10:200 rwm
|
40
|
+
#full
|
41
|
+
lxc.cgroup.devices.allow = c 1:7 rwm
|
42
|
+
#hpet
|
43
|
+
lxc.cgroup.devices.allow = c 10:228 rwm
|
44
|
+
#kvm
|
45
|
+
lxc.cgroup.devices.allow = c 10:232 rwm
|
46
|
+
|
47
|
+
# mounts point
|
48
|
+
lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
|
49
|
+
lxc.mount.entry = sysfs sys sysfs defaults 0 0
|
@@ -0,0 +1,195 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# This is a modified version of /usr/share/lxc/templates/lxc-debian
|
4
|
+
# that comes with Ubuntu 13.04 changed to suit vagrant-lxc needs
|
5
|
+
|
6
|
+
set -e
|
7
|
+
|
8
|
+
if [ -r /etc/default/lxc ]; then
|
9
|
+
. /etc/default/lxc
|
10
|
+
fi
|
11
|
+
|
12
|
+
SUITE=${SUITE:-wheezy}
|
13
|
+
MIRROR=${MIRROR:-http://ftp.debian.org/debian}
|
14
|
+
|
15
|
+
configure_debian()
|
16
|
+
{
|
17
|
+
rootfs=$1
|
18
|
+
hostname=$2
|
19
|
+
release=$2
|
20
|
+
|
21
|
+
# squeeze only has /dev/tty and /dev/tty0 by default,
|
22
|
+
# therefore creating missing device nodes for tty1-4.
|
23
|
+
for tty in $(seq 1 4); do
|
24
|
+
if [ ! -e $rootfs/dev/tty$tty ]; then
|
25
|
+
mknod $rootfs/dev/tty$tty c 4 $tty
|
26
|
+
fi
|
27
|
+
done
|
28
|
+
|
29
|
+
# configure the inittab
|
30
|
+
cat <<EOF > $rootfs/etc/inittab
|
31
|
+
id:3:initdefault:
|
32
|
+
si::sysinit:/etc/init.d/rcS
|
33
|
+
l0:0:wait:/etc/init.d/rc 0
|
34
|
+
l1:1:wait:/etc/init.d/rc 1
|
35
|
+
l2:2:wait:/etc/init.d/rc 2
|
36
|
+
l3:3:wait:/etc/init.d/rc 3
|
37
|
+
l4:4:wait:/etc/init.d/rc 4
|
38
|
+
l5:5:wait:/etc/init.d/rc 5
|
39
|
+
l6:6:wait:/etc/init.d/rc 6
|
40
|
+
# Normally not reached, but fallthrough in case of emergency.
|
41
|
+
z6:6:respawn:/sbin/sulogin
|
42
|
+
1:2345:respawn:/sbin/getty 38400 console
|
43
|
+
#c1:12345:respawn:/sbin/getty 38400 tty1 linux
|
44
|
+
c2:12345:respawn:/sbin/getty 38400 tty2 linux
|
45
|
+
c3:12345:respawn:/sbin/getty 38400 tty3 linux
|
46
|
+
c4:12345:respawn:/sbin/getty 38400 tty4 linux
|
47
|
+
p6::ctrlaltdel:/sbin/init 6
|
48
|
+
p0::powerfail:/sbin/init 0
|
49
|
+
EOF
|
50
|
+
|
51
|
+
# disable selinux in debian
|
52
|
+
mkdir -p $rootfs/selinux
|
53
|
+
echo 0 > $rootfs/selinux/enforce
|
54
|
+
|
55
|
+
# configure the network using the dhcp
|
56
|
+
cat <<EOF > $rootfs/etc/network/interfaces
|
57
|
+
auto lo
|
58
|
+
iface lo inet loopback
|
59
|
+
|
60
|
+
auto eth0
|
61
|
+
iface eth0 inet dhcp
|
62
|
+
EOF
|
63
|
+
|
64
|
+
# set the hostname
|
65
|
+
cat <<EOF > $rootfs/etc/hostname
|
66
|
+
$hostname
|
67
|
+
EOF
|
68
|
+
|
69
|
+
# set minimal hosts
|
70
|
+
cat <<EOF > $rootfs/etc/hosts
|
71
|
+
127.0.0.1 localhost
|
72
|
+
127.0.1.1 $hostname
|
73
|
+
|
74
|
+
# The following lines are desirable for IPv6 capable hosts
|
75
|
+
::1 ip6-localhost ip6-loopback
|
76
|
+
fe00::0 ip6-localnet
|
77
|
+
ff00::0 ip6-mcastprefix
|
78
|
+
ff02::1 ip6-allnodes
|
79
|
+
ff02::2 ip6-allrouters
|
80
|
+
ff02::3 ip6-allhosts
|
81
|
+
EOF
|
82
|
+
|
83
|
+
# set default locale
|
84
|
+
cat <<EOF > $rootfs/etc/locale.gen
|
85
|
+
en_US.UTF-8 UTF-8
|
86
|
+
EOF
|
87
|
+
echo "default locale set to en_US.UTF-8 UTF-8"
|
88
|
+
chroot $rootfs locale-gen 'en_US.UTF-8' > /dev/null 2>&1
|
89
|
+
chroot $rootfs update-locale LANG='en_US.UTF-8'
|
90
|
+
echo 'update-locale done'
|
91
|
+
|
92
|
+
# remove pointless services in a container
|
93
|
+
chroot $rootfs /usr/sbin/update-rc.d -f checkroot.sh remove
|
94
|
+
chroot $rootfs /usr/sbin/update-rc.d -f umountfs remove
|
95
|
+
chroot $rootfs /usr/sbin/update-rc.d -f hwclock.sh remove
|
96
|
+
chroot $rootfs /usr/sbin/update-rc.d -f hwclockfirst.sh remove
|
97
|
+
|
98
|
+
echo "root:vagrant" | chroot $rootfs chpasswd
|
99
|
+
|
100
|
+
if ! (grep -q vagrant $rootfs/etc/passwd); then
|
101
|
+
chroot $rootfs useradd --create-home -s /bin/bash vagrant
|
102
|
+
echo "vagrant:vagrant" | chroot $rootfs chpasswd
|
103
|
+
chroot $rootfs adduser vagrant sudo >/dev/null 2>&1 || true
|
104
|
+
chroot $rootfs cp /etc/sudoers /etc/sudoers.orig >/dev/null 2>&1 || true
|
105
|
+
chroot $rootfs sed -i -e \
|
106
|
+
's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' \
|
107
|
+
/etc/sudoers >/dev/null 2>&1 || true
|
108
|
+
fi
|
109
|
+
|
110
|
+
return 0
|
111
|
+
}
|
112
|
+
|
113
|
+
cleanup()
|
114
|
+
{
|
115
|
+
rm -rf ${cache}/partial
|
116
|
+
rm -rf ${cache}/rootfs
|
117
|
+
}
|
118
|
+
|
119
|
+
add_ssh_key()
|
120
|
+
{
|
121
|
+
user=$1
|
122
|
+
|
123
|
+
if [ -n "$auth_key" -a -f "$auth_key" ]; then
|
124
|
+
u_path="/home/${user}/.ssh"
|
125
|
+
root_u_path="$rootfs/$u_path"
|
126
|
+
|
127
|
+
mkdir -p $root_u_path
|
128
|
+
cp $auth_key "$root_u_path/authorized_keys"
|
129
|
+
chroot $rootfs chown -R ${user}: "$u_path"
|
130
|
+
|
131
|
+
echo "Inserted SSH public key from $auth_key into /home/${user}/.ssh/authorized_keys"
|
132
|
+
fi
|
133
|
+
}
|
134
|
+
|
135
|
+
disable_tmp_cleanup() {
|
136
|
+
rootfs=$1
|
137
|
+
chroot $rootfs /usr/sbin/update-rc.d -f checkroot-bootclean.sh remove
|
138
|
+
chroot $rootfs /usr/sbin/update-rc.d -f mountall-bootclean.sh remove
|
139
|
+
chroot $rootfs /usr/sbin/update-rc.d -f mountnfs-bootclean.sh remove
|
140
|
+
}
|
141
|
+
|
142
|
+
release=wheezy # Default to the last Debian stable release
|
143
|
+
|
144
|
+
arch=$(uname -m)
|
145
|
+
|
146
|
+
# Code taken from debootstrap
|
147
|
+
if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
|
148
|
+
arch=`/usr/bin/dpkg --print-architecture`
|
149
|
+
elif type udpkg >/dev/null 2>&1 && udpkg --print-architecture >/dev/null 2>&1; then
|
150
|
+
arch=`/usr/bin/udpkg --print-architecture`
|
151
|
+
else
|
152
|
+
arch=$(uname -m)
|
153
|
+
if [ "$arch" = "i686" ]; then
|
154
|
+
arch="i386"
|
155
|
+
elif [ "$arch" = "x86_64" ]; then
|
156
|
+
arch="amd64"
|
157
|
+
elif [ "$arch" = "armv7l" ]; then
|
158
|
+
arch="armel"
|
159
|
+
fi
|
160
|
+
fi
|
161
|
+
|
162
|
+
if [ "$(id -u)" != "0" ]; then
|
163
|
+
echo "This script should be run as 'root'"
|
164
|
+
exit 1
|
165
|
+
fi
|
166
|
+
|
167
|
+
declare cache=`readlink -f .` \
|
168
|
+
arch=$1 \
|
169
|
+
release=$2 \
|
170
|
+
auth_key=$3
|
171
|
+
|
172
|
+
# detect rootfs
|
173
|
+
cache=`readlink -f .`
|
174
|
+
rootfs="${cache}/rootfs"
|
175
|
+
|
176
|
+
configure_debian $rootfs $release
|
177
|
+
if [ $? -ne 0 ]; then
|
178
|
+
echo "failed to configure debian $release for a container"
|
179
|
+
exit 1
|
180
|
+
fi
|
181
|
+
|
182
|
+
add_ssh_key vagrant
|
183
|
+
|
184
|
+
# vagrant and / or plugins might mount some shared folders under /tmp by default
|
185
|
+
# (like puppet manifests) and we need to make sure no shared folder gets its
|
186
|
+
# contents removed because of it. For more information, please check:
|
187
|
+
# https://github.com/fgrehm/vagrant-lxc/issues/68
|
188
|
+
disable_tmp_cleanup $rootfs
|
189
|
+
|
190
|
+
echo ""
|
191
|
+
echo "##"
|
192
|
+
echo "# The default user is 'vagrant' with password 'vagrant'!"
|
193
|
+
echo "# Use the 'sudo' command to run tasks as root in the container."
|
194
|
+
echo "##"
|
195
|
+
echo ""
|