vagrant-lxc 0.8.0 → 1.0.0.alpha.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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/BOXES.md +13 -21
- data/CHANGELOG.md +49 -0
- data/CONTRIBUTING.md +5 -2
- data/Gemfile +12 -13
- data/Gemfile.lock +66 -51
- data/README.md +39 -25
- data/development/Vagrantfile +0 -2
- data/lib/vagrant-backports/README.md +12 -0
- data/lib/vagrant-backports/action/handle_box.rb +1 -0
- data/lib/vagrant-backports/action/is_state.rb +34 -0
- data/lib/vagrant-backports/action/message.rb +20 -0
- data/lib/{vagrant-lxc → vagrant-backports}/action/wait_for_communicator.rb +6 -5
- data/lib/vagrant-backports/ui.rb +12 -0
- data/lib/vagrant-backports/utils.rb +27 -0
- data/lib/vagrant-lxc.rb +8 -0
- data/lib/vagrant-lxc/action.rb +81 -48
- data/lib/vagrant-lxc/action/boot.rb +2 -1
- data/lib/vagrant-lxc/action/fetch_ip_from_dnsmasq_leases.rb +1 -0
- data/lib/vagrant-lxc/action/handle_box_metadata.rb +36 -14
- data/lib/vagrant-lxc/action/message.rb +0 -23
- data/lib/vagrant-lxc/action/prepare_nfs_settings.rb +64 -0
- data/lib/vagrant-lxc/action/prepare_nfs_valid_ids.rb +19 -0
- data/lib/vagrant-lxc/action/setup_package_files.rb +6 -2
- data/lib/vagrant-lxc/{action → backports/action}/share_folders.rb +0 -0
- data/lib/vagrant-lxc/command/root.rb +58 -0
- data/lib/vagrant-lxc/command/sudoers.rb +87 -0
- data/lib/vagrant-lxc/driver.rb +21 -11
- data/lib/vagrant-lxc/plugin.rb +23 -5
- data/lib/vagrant-lxc/provider/cap/public_address.rb +17 -0
- data/lib/vagrant-lxc/synced_folder.rb +42 -0
- data/lib/vagrant-lxc/version.rb +1 -1
- data/locales/en.yml +6 -5
- data/scripts/lxc-template +165 -0
- data/spec/spec_helper.rb +9 -13
- data/spec/unit/action/clear_forwarded_ports_spec.rb +3 -3
- data/spec/unit/action/compress_rootfs_spec.rb +7 -5
- data/spec/unit/action/forward_ports_spec.rb +8 -8
- data/spec/unit/action/handle_box_metadata_spec.rb +71 -15
- data/spec/unit/action/setup_package_files_spec.rb +32 -8
- data/spec/unit/driver/cli_spec.rb +31 -30
- data/spec/unit/driver_spec.rb +35 -27
- data/spec/unit/support/unit_example_group.rb +6 -6
- data/spec/unit_helper.rb +4 -2
- data/tasks/spec.rake +18 -11
- data/vagrant-lxc.gemspec +7 -0
- data/vagrant-spec.config.rb +24 -0
- metadata +24 -36
- data/boxes/build-all.sh +0 -22
- data/boxes/build-debian-box.sh +0 -167
- data/boxes/build-openmandriva-box.sh +0 -159
- data/boxes/build-ubuntu-box.sh +0 -151
- data/boxes/common/cleanup +0 -7
- data/boxes/common/install-babushka +0 -16
- data/boxes/common/install-chef +0 -15
- data/boxes/common/install-puppet +0 -13
- data/boxes/common/install-salt +0 -12
- data/boxes/common/install-salt-debian +0 -28
- data/boxes/common/lxc-template +0 -226
- data/boxes/common/lxc-template-openmandriva +0 -225
- data/boxes/common/lxc.conf +0 -49
- data/boxes/common/metadata.json +0 -5
- data/lib/vagrant-lxc/action/check_created.rb +0 -21
- data/lib/vagrant-lxc/action/check_running.rb +0 -21
- data/lib/vagrant-lxc/action/created.rb +0 -20
- data/lib/vagrant-lxc/action/disconnect.rb +0 -18
- data/lib/vagrant-lxc/action/is_running.rb +0 -19
- data/spec/acceptance/sanity_check_spec.rb +0 -111
- data/spec/acceptance/support/acceptance_example_group.rb +0 -76
- data/spec/acceptance/support/machine_ext.rb +0 -12
- data/spec/acceptance/support/test_ui.rb +0 -22
- data/spec/acceptance_helper.rb +0 -21
data/boxes/build-ubuntu-box.sh
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
# set -x
|
4
|
-
set -e
|
5
|
-
|
6
|
-
# Script used to build Ubuntu base vagrant-lxc containers
|
7
|
-
#
|
8
|
-
# USAGE:
|
9
|
-
# $ cd boxes && sudo ./build-ubuntu-box.sh UBUNTU_RELEASE BOX_ARCH
|
10
|
-
#
|
11
|
-
# To enable Chef or any other configuration management tool pass '1' to the
|
12
|
-
# corresponding env var:
|
13
|
-
# $ CHEF=1 sudo -E ./build-ubuntu-box.sh UBUNTU_RELEASE BOX_ARCH
|
14
|
-
# $ PUPPET=1 sudo -E ./build-ubuntu-box.sh UBUNTU_RELEASE BOX_ARCH
|
15
|
-
# $ SALT=1 sudo -E ./build-ubuntu-box.sh UBUNTU_RELEASE BOX_ARCH
|
16
|
-
# $ BABUSHKA=1 sudo -E ./build-ubuntu-box.sh UBUNTU_RELEASE BOX_ARCH
|
17
|
-
|
18
|
-
##################################################################################
|
19
|
-
# 0 - Initial setup and sanity checks
|
20
|
-
|
21
|
-
TODAY=$(date -u +"%Y-%m-%d")
|
22
|
-
NOW=$(date -u)
|
23
|
-
RELEASE=${1:-"raring"}
|
24
|
-
ARCH=${2:-"amd64"}
|
25
|
-
PKG=vagrant-lxc-${RELEASE}-${ARCH}-${TODAY}.box
|
26
|
-
WORKING_DIR=/tmp/vagrant-lxc-${RELEASE}
|
27
|
-
VAGRANT_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key"
|
28
|
-
ROOTFS=/var/lib/lxc/${RELEASE}-base/rootfs
|
29
|
-
|
30
|
-
# Providing '1' will enable these tools
|
31
|
-
CHEF=${CHEF:-0}
|
32
|
-
PUPPET=${PUPPET:-0}
|
33
|
-
SALT=${SALT:-0}
|
34
|
-
BABUSHKA=${BABUSHKA:-0}
|
35
|
-
|
36
|
-
# Path to files bundled with the box
|
37
|
-
CWD=`readlink -f .`
|
38
|
-
LXC_TEMPLATE=${CWD}/common/lxc-template
|
39
|
-
LXC_CONF=${CWD}/common/lxc.conf
|
40
|
-
METATADA_JSON=${CWD}/common/metadata.json
|
41
|
-
|
42
|
-
# Set up a working dir
|
43
|
-
mkdir -p $WORKING_DIR
|
44
|
-
|
45
|
-
if [ -f "${WORKING_DIR}/${PKG}" ]; then
|
46
|
-
echo "Found a box on ${WORKING_DIR}/${PKG} already!"
|
47
|
-
exit 1
|
48
|
-
fi
|
49
|
-
|
50
|
-
##################################################################################
|
51
|
-
# 1 - Create the base container
|
52
|
-
|
53
|
-
if $(lxc-ls | grep -q "${RELEASE}-base"); then
|
54
|
-
echo "Base container already exists, please remove it with \`lxc-destroy -n ${RELEASE}-base\`!"
|
55
|
-
exit 1
|
56
|
-
else
|
57
|
-
lxc-create -n ${RELEASE}-base -t ubuntu -- --release ${RELEASE} --arch ${ARCH}
|
58
|
-
fi
|
59
|
-
|
60
|
-
# Fixes some networking issues
|
61
|
-
# See https://github.com/fgrehm/vagrant-lxc/issues/91 for more info
|
62
|
-
echo 'ff02::3 ip6-allhosts' >> ${ROOTFS}/etc/hosts
|
63
|
-
|
64
|
-
|
65
|
-
##################################################################################
|
66
|
-
# 2 - Prepare vagrant user
|
67
|
-
|
68
|
-
mv ${ROOTFS}/home/{ubuntu,vagrant}
|
69
|
-
chroot ${ROOTFS} usermod -l vagrant -d /home/vagrant ubuntu
|
70
|
-
chroot ${ROOTFS} groupmod -n vagrant ubuntu
|
71
|
-
|
72
|
-
echo -n 'vagrant:vagrant' | chroot ${ROOTFS} chpasswd
|
73
|
-
|
74
|
-
|
75
|
-
##################################################################################
|
76
|
-
# 3 - Setup SSH access and passwordless sudo
|
77
|
-
|
78
|
-
# Configure SSH access
|
79
|
-
mkdir -p ${ROOTFS}/home/vagrant/.ssh
|
80
|
-
echo $VAGRANT_KEY > ${ROOTFS}/home/vagrant/.ssh/authorized_keys
|
81
|
-
chroot ${ROOTFS} chown -R vagrant: /home/vagrant/.ssh
|
82
|
-
|
83
|
-
# Enable passwordless sudo for users under the "sudo" group
|
84
|
-
cp ${ROOTFS}/etc/sudoers{,.orig}
|
85
|
-
sed -i -e \
|
86
|
-
's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' \
|
87
|
-
${ROOTFS}/etc/sudoers
|
88
|
-
|
89
|
-
|
90
|
-
##################################################################################
|
91
|
-
# 4 - Add some goodies and update packages
|
92
|
-
|
93
|
-
PACKAGES=(vim curl wget man-db bash-completion)
|
94
|
-
chroot ${ROOTFS} apt-get install ${PACKAGES[*]} -y --force-yes
|
95
|
-
chroot ${ROOTFS} apt-get upgrade -y --force-yes
|
96
|
-
|
97
|
-
|
98
|
-
##################################################################################
|
99
|
-
# 5 - Configuration management tools
|
100
|
-
|
101
|
-
if [ $CHEF = 1 ]; then
|
102
|
-
./common/install-chef $ROOTFS
|
103
|
-
fi
|
104
|
-
|
105
|
-
if [ $PUPPET = 1 ]; then
|
106
|
-
./common/install-puppet $ROOTFS
|
107
|
-
fi
|
108
|
-
|
109
|
-
if [ $SALT = 1 ]; then
|
110
|
-
./common/install-salt $ROOTFS
|
111
|
-
fi
|
112
|
-
|
113
|
-
if [ $BABUSHKA = 1 ]; then
|
114
|
-
./common/install-babushka $ROOTFS
|
115
|
-
fi
|
116
|
-
|
117
|
-
|
118
|
-
##################################################################################
|
119
|
-
# 6 - Free up some disk space
|
120
|
-
|
121
|
-
rm -rf ${ROOTFS}/tmp/*
|
122
|
-
chroot ${ROOTFS} apt-get clean
|
123
|
-
|
124
|
-
|
125
|
-
##################################################################################
|
126
|
-
# 7 - Build box package
|
127
|
-
|
128
|
-
# Compress container's rootfs
|
129
|
-
cd $(dirname $ROOTFS)
|
130
|
-
tar --numeric-owner -czf /tmp/vagrant-lxc-${RELEASE}/rootfs.tar.gz ./rootfs/*
|
131
|
-
|
132
|
-
# Prepare package contents
|
133
|
-
cd $WORKING_DIR
|
134
|
-
cp $LXC_TEMPLATE .
|
135
|
-
cp $LXC_CONF .
|
136
|
-
cp $METATADA_JSON .
|
137
|
-
chmod +x lxc-template
|
138
|
-
sed -i "s/<TODAY>/${NOW}/" metadata.json
|
139
|
-
|
140
|
-
# Vagrant box!
|
141
|
-
tar -czf $PKG ./*
|
142
|
-
|
143
|
-
chmod +rw ${WORKING_DIR}/${PKG}
|
144
|
-
mkdir -p ${CWD}/output
|
145
|
-
mv ${WORKING_DIR}/${PKG} ${CWD}/output
|
146
|
-
|
147
|
-
# Clean up after ourselves
|
148
|
-
rm -rf ${WORKING_DIR}
|
149
|
-
lxc-destroy -n ${RELEASE}-base
|
150
|
-
|
151
|
-
echo "The base box was built successfully to ${CWD}/output/${PKG}"
|
data/boxes/common/cleanup
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -e
|
4
|
-
|
5
|
-
rootfs=$1
|
6
|
-
|
7
|
-
echo "installing babushka"
|
8
|
-
cat > $rootfs/tmp/install-babushka.sh << EOF
|
9
|
-
#!/bin/sh
|
10
|
-
curl https://babushka.me/up | sudo bash
|
11
|
-
|
12
|
-
EOF
|
13
|
-
chmod +x $rootfs/tmp/install-babushka.sh
|
14
|
-
chroot $rootfs /tmp/install-babushka.sh
|
15
|
-
|
16
|
-
rm -rf $rootfs/tmp/*
|
data/boxes/common/install-chef
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -e
|
4
|
-
|
5
|
-
rootfs=$1
|
6
|
-
|
7
|
-
echo "installing chef"
|
8
|
-
cat > $rootfs/tmp/install-chef.sh << EOF
|
9
|
-
#!/bin/sh
|
10
|
-
curl -L https://www.opscode.com/chef/install.sh -k | sudo bash
|
11
|
-
EOF
|
12
|
-
chmod +x $rootfs/tmp/install-chef.sh
|
13
|
-
chroot $rootfs /tmp/install-chef.sh
|
14
|
-
|
15
|
-
rm -rf $rootfs/tmp/*
|
data/boxes/common/install-puppet
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -e
|
4
|
-
|
5
|
-
rootfs=$1
|
6
|
-
|
7
|
-
echo "installing puppet"
|
8
|
-
wget http://apt.puppetlabs.com/puppetlabs-release-stable.deb -O "${rootfs}/tmp/puppetlabs-release-stable.deb"
|
9
|
-
chroot $rootfs dpkg -i "/tmp/puppetlabs-release-stable.deb"
|
10
|
-
chroot $rootfs apt-get update
|
11
|
-
chroot $rootfs apt-get install puppet -y --force-yes
|
12
|
-
|
13
|
-
rm -rf $rootfs/tmp/*
|
data/boxes/common/install-salt
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -e
|
4
|
-
|
5
|
-
rootfs=$1
|
6
|
-
|
7
|
-
echo "installing salt"
|
8
|
-
|
9
|
-
if [ $SUITE == "squeeze" ]; then
|
10
|
-
SALT_SOURCE="deb http://debian.saltstack.com/debian squeeze-saltstack main\ndeb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free"
|
11
|
-
elif [ $SUITE == "sid" ]; then
|
12
|
-
SALT_SOURCE="deb http://debian.saltstack.com/debian unstable main"
|
13
|
-
else
|
14
|
-
SALT_SOURCE="deb http://debian.saltstack.com/debian wheezy-saltstack main"
|
15
|
-
fi
|
16
|
-
|
17
|
-
cat > $rootfs/tmp/install-salt << EOF
|
18
|
-
#!/bin/sh
|
19
|
-
echo "$SALT_SOURCE" > /etc/apt/sources.list.d/saltstack.list
|
20
|
-
wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
|
21
|
-
apt-get update
|
22
|
-
apt-get install -y salt-minion
|
23
|
-
apt-get clean
|
24
|
-
EOF
|
25
|
-
|
26
|
-
chroot $rootfs sh /tmp/install-salt
|
27
|
-
|
28
|
-
rm -rf $rootfs/tmp/*
|
data/boxes/common/lxc-template
DELETED
@@ -1,226 +0,0 @@
|
|
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 $rootfs
|
44
|
-
(cd $rootfs && tar xfz $tarball --strip-components=2)
|
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] [--rootfs <rootfs>] [-T|--tarball <rootfs-tarball>
|
116
|
-
arch: the container architecture (e.g. amd64): defaults to host arch
|
117
|
-
EOF
|
118
|
-
return 0
|
119
|
-
}
|
120
|
-
|
121
|
-
options=$(getopt -o a:b:hp:r:xn:FS:d:C -l arch:,help,path:,release:,trim,name:,flush-cache,auth-key:,debug:,tarball:,rootfs: -- "$@")
|
122
|
-
if [ $? -ne 0 ]; then
|
123
|
-
usage $(basename $0)
|
124
|
-
exit 1
|
125
|
-
fi
|
126
|
-
eval set -- "$options"
|
127
|
-
|
128
|
-
release=precise # Default to the last Ubuntu LTS release for non-Ubuntu systems
|
129
|
-
if [ -f /etc/lsb-release ]; then
|
130
|
-
. /etc/lsb-release
|
131
|
-
if [ "$DISTRIB_ID" = "Ubuntu" ]; then
|
132
|
-
release=$DISTRIB_CODENAME
|
133
|
-
fi
|
134
|
-
fi
|
135
|
-
|
136
|
-
arch=$(uname -m)
|
137
|
-
|
138
|
-
# Code taken from debootstrap
|
139
|
-
if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
|
140
|
-
arch=`/usr/bin/dpkg --print-architecture`
|
141
|
-
elif type udpkg >/dev/null 2>&1 && udpkg --print-architecture >/dev/null 2>&1; then
|
142
|
-
arch=`/usr/bin/udpkg --print-architecture`
|
143
|
-
else
|
144
|
-
arch=$(uname -m)
|
145
|
-
if [ "$arch" = "i686" ]; then
|
146
|
-
arch="i386"
|
147
|
-
elif [ "$arch" = "x86_64" ]; then
|
148
|
-
arch="amd64"
|
149
|
-
elif [ "$arch" = "armv7l" ]; then
|
150
|
-
arch="armel"
|
151
|
-
fi
|
152
|
-
fi
|
153
|
-
|
154
|
-
debug=0
|
155
|
-
trim_container=0
|
156
|
-
hostarch=$arch
|
157
|
-
while true
|
158
|
-
do
|
159
|
-
case "$1" in
|
160
|
-
-h|--help) usage $0 && exit 0;;
|
161
|
-
--rootfs) rootfs=$2; shift 2;;
|
162
|
-
-p|--path) path=$2; shift 2;;
|
163
|
-
-n|--name) name=$2; shift 2;;
|
164
|
-
-T|--tarball) tarball=$2; shift 2;;
|
165
|
-
-a|--arch) arch=$2; shift 2;;
|
166
|
-
-S|--auth-key) auth_key=$2; shift 2;;
|
167
|
-
-d|--debug) debug=1; shift 1;;
|
168
|
-
--) shift 1; break ;;
|
169
|
-
*) break ;;
|
170
|
-
esac
|
171
|
-
done
|
172
|
-
|
173
|
-
if [ $debug -eq 1 ]; then
|
174
|
-
set -x
|
175
|
-
fi
|
176
|
-
|
177
|
-
if [ "$arch" == "i686" ]; then
|
178
|
-
arch=i386
|
179
|
-
fi
|
180
|
-
|
181
|
-
if [ $hostarch = "i386" -a $arch = "amd64" ]; then
|
182
|
-
echo "can't create amd64 container on i386"
|
183
|
-
exit 1
|
184
|
-
fi
|
185
|
-
|
186
|
-
if [ -z "$path" ]; then
|
187
|
-
echo "'path' parameter is required"
|
188
|
-
exit 1
|
189
|
-
fi
|
190
|
-
|
191
|
-
if [ "$(id -u)" != "0" ]; then
|
192
|
-
echo "This script should be run as 'root'"
|
193
|
-
exit 1
|
194
|
-
fi
|
195
|
-
|
196
|
-
# detect rootfs
|
197
|
-
config="$path/config"
|
198
|
-
# if $rootfs exists here, it was passed in with --rootfs
|
199
|
-
if [ -z "$rootfs" ]; then
|
200
|
-
if grep -q '^lxc.rootfs' $config 2>/dev/null ; then
|
201
|
-
rootfs=`grep 'lxc.rootfs =' $config | awk -F= '{ print $2 }'`
|
202
|
-
else
|
203
|
-
rootfs=$path/rootfs
|
204
|
-
fi
|
205
|
-
fi
|
206
|
-
|
207
|
-
install_ubuntu $rootfs $release $tarball
|
208
|
-
if [ $? -ne 0 ]; then
|
209
|
-
echo "failed to install ubuntu $release"
|
210
|
-
exit 1
|
211
|
-
fi
|
212
|
-
|
213
|
-
copy_configuration $path $rootfs $name $arch
|
214
|
-
if [ $? -ne 0 ]; then
|
215
|
-
echo "failed write configuration file"
|
216
|
-
exit 1
|
217
|
-
fi
|
218
|
-
|
219
|
-
post_process $rootfs $release $trim_container
|
220
|
-
|
221
|
-
echo ""
|
222
|
-
echo "##"
|
223
|
-
echo "# The default user is 'vagrant' with password 'vagrant'!"
|
224
|
-
echo "# Use the 'sudo' command to run tasks as root in the container."
|
225
|
-
echo "##"
|
226
|
-
echo ""
|