~serge-hallyn/ubuntu/quantal/lxc/lxc-fixapi

« back to all changes in this revision

Viewing changes to debian/patches/0038-ubuntu-cloud-template

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2012-04-26 15:18:35 UTC
  • mfrom: (3.1.41 sid)
  • Revision ID: package-import@ubuntu.com-20120426151835-3vz6kb4m90gb26js
Tags: 0.8.0~rc1-4ubuntu1
* Merge from unstable.  Remaining changes:
  - control:
    - update maintainer
    - Build-Depends: add dh-apparmor and libapparmor-dev
    - lxc Depends: add bridge-utils, dnsmasq-base, iptables, rsync
    - lxc Recommends: add cgroup-lite | cgroup-bin, openssl
    - lxc Suggests: add btrfs-tools, lvm2, qemu-user-static
    - lxc Conflicts: remove (cgroup-bin)
  - Add lxc-start-ephemeral and lxc-wait to debian/local
  - apparmor:
    - add lxc.apparmor, lxc-containers.apparmor,
      lxc-default.apparmor, and new lxc.apparmor.in
  - add debian/lxc.conf (default container creation config file)
  - debian/lxc.install.in:
    * add lxc-start-ephemeral
    * add debian/lxc.conf
    * skip lxc-debconf*
    * skip lxc-ls (Use upstream's)
  - debian/lxc*.install.in: use '*', not @DEB_HOST_MULTIARCH@
  - Use our own completely different lxc.postinst and lxc.postrm
  - remove lxc.templates
  - debian/rules:
    * add DEB_DH_INSTALLINIT_ARGS = --upstart-only
    * don't do debconf stuff
    * add debian/*.apparmor.in to files processed under
      override_dh_auto_clean
    * don't comment out ubuntu or busybox templates
    * do apparmor stuff and install our own lxc-wait under override_dh_install
    * install our upstart scripts in override_dh_installinit
  - add lxc.default, lxc.lxc-net.upstart, lxc.upstart under
    debian/

* patches kept:
  - 0013-lxc-create-use-default-config.patch (needed manual rebase)
  - 0030-ubuntu-template-fail.patch
  - 0031-ubuntu-template-resolvconf.patch
  - 0044-lxc-destroy-rm-autos
  - debian/patches/0045-fix-other-templates
  - debian/patches/0046-lxc-clone-change-hwaddr
  - debian/patches/0047-bindhome-check-shell
  - debian/patches/0049-ubuntu-template-sudo-and-cleanup
  - debian/patches/0050-clone-lvm-sizes
  - debian/patches/0052-ubuntu-bind-user-conflict
  - debian/patches/0053-lxc-start-pin-rootfs
  - debian/patches/0054-ubuntu-debug
  - debian/patches/0055-ubuntu-handle-badgrp
  - debian/patches/0056-dont-watch-utmp
  - debian/patches/0057-update-manpages
  - debian/patches/0058-fixup-ubuntu-cloud
  - debian/patches/0059-reenable-daily-cloudimg
  - debian/patches/0060-lxc-shutdown
  - debian/patches/0061-lxc-start-apparmor
  - debian/patches/0062-templates-relative-paths
  - debian/patches/0063-check-apparmor-enabled
  - debian/patches/0064-apparmor-mount-proc
  - debian/patches/0065-fix-bindhome-relpath
  - debian/patches/0066-confile-typo
  - debian/patches/0067-templates-lxc-profile
  - debian/patches/0068-fix-lxc-config-layout 
  - debian/patches/0069-ubuntu-cloud-fix
  - debian/patches/0070-templates-rmdir-dev-shm
  - debian/patches/0071-ubuntu-cloud-fix-image-extraction
  - debian/patches/0072-lxc-shutdown-help
  - debian/patches/0073-lxc-destroy-waits-before-destroy
  - mark all patches which have been forwarded as such, refresh all
* 0074-lxc-execute-find-init: lxc-init had moved.  Introduce a function in
  lxc-execute to go find it.  Otherwise lxc-execute for any older releases
  will fail.
* 0075-lxc-ls-bash: lxc-ls needs bash, not sh
* add debian/lxc.apparmor.in so DEB_HOST_MULTIARCH can be expanded
* 0076-fix-sprintfs:  - check return values for all sprintfs and snprintfs
  which could overflow (LP: #988918)
* 0077-execute-without-rootfs: let lxc-execute succeed with no rootfs
  (LP: #981955)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Description: add lxc-ubuntu-cloud template
2
 
Author: Serge Hallyn <serge.hallyn@canonical.com>
3
 
Forwarded: yes
4
 
 
5
 
Index: lxc-0.7.5/configure
6
 
===================================================================
7
 
--- lxc-0.7.5.orig/configure    2012-02-08 14:17:32.000000000 -0600
8
 
+++ lxc-0.7.5/configure 2012-02-08 14:17:32.000000000 -0600
9
 
@@ -5058,7 +5058,7 @@
10
 
   CFLAGS="$CFLAGS -Wall"
11
 
 fi
12
 
 
13
 
-ac_config_files="$ac_config_files Makefile lxc.pc lxc.spec config/Makefile doc/Makefile doc/lxc-create.sgml doc/lxc-destroy.sgml doc/lxc-execute.sgml doc/lxc-start.sgml doc/lxc-checkpoint.sgml doc/lxc-restart.sgml doc/lxc-stop.sgml doc/lxc-console.sgml doc/lxc-freeze.sgml doc/lxc-unfreeze.sgml doc/lxc-monitor.sgml doc/lxc-wait.sgml doc/lxc-ls.sgml doc/lxc-ps.sgml doc/lxc-cgroup.sgml doc/lxc-kill.sgml doc/lxc.conf.sgml doc/lxc.sgml doc/common_options.sgml doc/see_also.sgml doc/rootfs/Makefile doc/examples/Makefile doc/examples/lxc-macvlan.conf doc/examples/lxc-vlan.conf doc/examples/lxc-no-netns.conf doc/examples/lxc-empty-netns.conf doc/examples/lxc-phys.conf doc/examples/lxc-veth.conf doc/examples/lxc-complex.conf templates/Makefile templates/lxc-lenny templates/lxc-debian templates/lxc-ubuntu templates/lxc-opensuse templates/lxc-busybox templates/lxc-fedora templates/lxc-sshd src/Makefile src/lxc/Makefile src/lxc/lxc-ps src/lxc/lxc-ls src/lxc/lxc-netstat src/lxc/lxc-checkconfig src/lxc/lxc-setcap src/lxc/lxc-setuid src/lxc/lxc-version src/lxc/lxc-create src/lxc/lxc-clone src/lxc/lxc-destroy"
14
 
+ac_config_files="$ac_config_files Makefile lxc.pc lxc.spec config/Makefile doc/Makefile doc/lxc-create.sgml doc/lxc-destroy.sgml doc/lxc-execute.sgml doc/lxc-start.sgml doc/lxc-checkpoint.sgml doc/lxc-restart.sgml doc/lxc-stop.sgml doc/lxc-console.sgml doc/lxc-freeze.sgml doc/lxc-unfreeze.sgml doc/lxc-monitor.sgml doc/lxc-wait.sgml doc/lxc-ls.sgml doc/lxc-ps.sgml doc/lxc-cgroup.sgml doc/lxc-kill.sgml doc/lxc.conf.sgml doc/lxc.sgml doc/common_options.sgml doc/see_also.sgml doc/rootfs/Makefile doc/examples/Makefile doc/examples/lxc-macvlan.conf doc/examples/lxc-vlan.conf doc/examples/lxc-no-netns.conf doc/examples/lxc-empty-netns.conf doc/examples/lxc-phys.conf doc/examples/lxc-veth.conf doc/examples/lxc-complex.conf templates/Makefile templates/lxc-lenny templates/lxc-debian templates/lxc-ubuntu templates/lxc-ubuntu-cloud templates/lxc-opensuse templates/lxc-busybox templates/lxc-fedora templates/lxc-sshd src/Makefile src/lxc/Makefile src/lxc/lxc-ps src/lxc/lxc-ls src/lxc/lxc-netstat src/lxc/lxc-checkconfig src/lxc/lxc-setcap src/lxc/lxc-setuid src/lxc/lxc-version src/lxc/lxc-create src/lxc/lxc-clone src/lxc/lxc-destroy"
15
 
 
16
 
 ac_config_commands="$ac_config_commands default"
17
 
 
18
 
@@ -5828,6 +5828,7 @@
19
 
     "templates/lxc-lenny") CONFIG_FILES="$CONFIG_FILES templates/lxc-lenny" ;;
20
 
     "templates/lxc-debian") CONFIG_FILES="$CONFIG_FILES templates/lxc-debian" ;;
21
 
     "templates/lxc-ubuntu") CONFIG_FILES="$CONFIG_FILES templates/lxc-ubuntu" ;;
22
 
+    "templates/lxc-ubuntu-cloud") CONFIG_FILES="$CONFIG_FILES templates/lxc-ubuntu-cloud" ;;
23
 
     "templates/lxc-opensuse") CONFIG_FILES="$CONFIG_FILES templates/lxc-opensuse" ;;
24
 
     "templates/lxc-busybox") CONFIG_FILES="$CONFIG_FILES templates/lxc-busybox" ;;
25
 
     "templates/lxc-fedora") CONFIG_FILES="$CONFIG_FILES templates/lxc-fedora" ;;
26
 
Index: lxc-0.7.5/configure.ac
27
 
===================================================================
28
 
--- lxc-0.7.5.orig/configure.ac 2012-02-08 14:17:32.000000000 -0600
29
 
+++ lxc-0.7.5/configure.ac      2012-02-08 14:17:32.000000000 -0600
30
 
@@ -140,6 +140,7 @@
31
 
        templates/lxc-lenny
32
 
        templates/lxc-debian
33
 
        templates/lxc-ubuntu
34
 
+       templates/lxc-ubuntu-cloud
35
 
        templates/lxc-opensuse
36
 
        templates/lxc-busybox
37
 
        templates/lxc-fedora
38
 
Index: lxc-0.7.5/templates/Makefile.am
39
 
===================================================================
40
 
--- lxc-0.7.5.orig/templates/Makefile.am        2011-08-09 11:01:07.000000000 -0500
41
 
+++ lxc-0.7.5/templates/Makefile.am     2012-02-08 14:17:32.000000000 -0600
42
 
@@ -4,6 +4,7 @@
43
 
        lxc-debian \
44
 
        lxc-lenny \
45
 
        lxc-ubuntu \
46
 
+       lxc-ubuntu-cloud \
47
 
        lxc-opensuse \
48
 
        lxc-fedora \
49
 
        lxc-busybox \
50
 
Index: lxc-0.7.5/templates/Makefile.in
51
 
===================================================================
52
 
--- lxc-0.7.5.orig/templates/Makefile.in        2011-08-11 12:02:19.000000000 -0500
53
 
+++ lxc-0.7.5/templates/Makefile.in     2012-02-08 14:17:32.000000000 -0600
54
 
@@ -39,7 +39,7 @@
55
 
        $(srcdir)/lxc-busybox.in $(srcdir)/lxc-debian.in \
56
 
        $(srcdir)/lxc-fedora.in $(srcdir)/lxc-lenny.in \
57
 
        $(srcdir)/lxc-opensuse.in $(srcdir)/lxc-sshd.in \
58
 
-       $(srcdir)/lxc-ubuntu.in
59
 
+       $(srcdir)/lxc-ubuntu.in $(srcdir)/lxc-ubuntu-cloud.in
60
 
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
61
 
 am__aclocal_m4_deps = $(top_srcdir)/config/acinclude.m4 \
62
 
        $(top_srcdir)/config/linux.m4 $(top_srcdir)/configure.ac
63
 
@@ -48,7 +48,7 @@
64
 
 mkinstalldirs = $(install_sh) -d
65
 
 CONFIG_HEADER = $(top_builddir)/src/config.h
66
 
 CONFIG_CLEAN_FILES = lxc-lenny lxc-debian lxc-ubuntu lxc-opensuse \
67
 
-       lxc-busybox lxc-fedora lxc-sshd
68
 
+       lxc-busybox lxc-fedora lxc-sshd lxc-ubuntu-cloud
69
 
 CONFIG_CLEAN_VPATH_FILES =
70
 
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
71
 
 am__vpath_adj = case $$p in \
72
 
@@ -193,6 +193,7 @@
73
 
        lxc-debian \
74
 
        lxc-lenny \
75
 
        lxc-ubuntu \
76
 
+       lxc-ubuntu-cloud \
77
 
        lxc-opensuse \
78
 
        lxc-fedora \
79
 
        lxc-busybox \
80
 
@@ -237,6 +238,8 @@
81
 
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
82
 
 lxc-ubuntu: $(top_builddir)/config.status $(srcdir)/lxc-ubuntu.in
83
 
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
84
 
+lxc-ubuntu-cloud: $(top_builddir)/config.status $(srcdir)/lxc-ubuntu-cloud.in
85
 
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
86
 
 lxc-opensuse: $(top_builddir)/config.status $(srcdir)/lxc-opensuse.in
87
 
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
88
 
 lxc-busybox: $(top_builddir)/config.status $(srcdir)/lxc-busybox.in
89
 
Index: lxc-0.7.5/templates/lxc-ubuntu-cloud.in
90
 
===================================================================
91
 
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
92
 
+++ lxc-0.7.5/templates/lxc-ubuntu-cloud.in     2012-02-08 17:03:07.966139522 -0600
93
 
@@ -0,0 +1,250 @@
94
 
+#!/bin/bash
95
 
+
96
 
+# template script for generating ubuntu container for LXC based on daily cloud
97
 
+# images
98
 
+#
99
 
+# Copyright © 2012 Serge Hallyn <serge.hallyn@canonical.com>
100
 
+#
101
 
+# This program is free software; you can redistribute it and/or modify
102
 
+# it under the terms of the GNU General Public License version 2, as
103
 
+# published by the Free Software Foundation.
104
 
+
105
 
+# This program is distributed in the hope that it will be useful,
106
 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
107
 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
108
 
+# GNU General Public License for more details.
109
 
+
110
 
+# You should have received a copy of the GNU General Public License along
111
 
+# with this program; if not, write to the Free Software Foundation, Inc.,
112
 
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
113
 
+#
114
 
+
115
 
+set -e
116
 
+
117
 
+if [ -r /etc/default/lxc ]; then
118
 
+    . /etc/default/lxc
119
 
+fi
120
 
+
121
 
+copy_configuration()
122
 
+{
123
 
+    path=$1
124
 
+    rootfs=$2
125
 
+    name=$3
126
 
+    arch=$4
127
 
+
128
 
+    if [ $arch = "i386" ]; then
129
 
+        arch="i686"
130
 
+    fi
131
 
+
132
 
+    cat <<EOF >> $path/config
133
 
+lxc.utsname = $name
134
 
+
135
 
+lxc.tty = 4
136
 
+lxc.pts = 1024
137
 
+lxc.rootfs = $rootfs
138
 
+lxc.mount  = $path/fstab
139
 
+lxc.arch = $arch
140
 
+lxc.cap.drop = sys_module mac_admin
141
 
+
142
 
+lxc.cgroup.devices.deny = a
143
 
+# Allow any mknod (but not using the node)
144
 
+lxc.cgroup.devices.allow = c *:* m
145
 
+lxc.cgroup.devices.allow = b *:* m
146
 
+# /dev/null and zero
147
 
+lxc.cgroup.devices.allow = c 1:3 rwm
148
 
+lxc.cgroup.devices.allow = c 1:5 rwm
149
 
+# consoles
150
 
+lxc.cgroup.devices.allow = c 5:1 rwm
151
 
+lxc.cgroup.devices.allow = c 5:0 rwm
152
 
+#lxc.cgroup.devices.allow = c 4:0 rwm
153
 
+#lxc.cgroup.devices.allow = c 4:1 rwm
154
 
+# /dev/{,u}random
155
 
+lxc.cgroup.devices.allow = c 1:9 rwm
156
 
+lxc.cgroup.devices.allow = c 1:8 rwm
157
 
+lxc.cgroup.devices.allow = c 136:* rwm
158
 
+lxc.cgroup.devices.allow = c 5:2 rwm
159
 
+# rtc
160
 
+lxc.cgroup.devices.allow = c 254:0 rwm
161
 
+#fuse
162
 
+lxc.cgroup.devices.allow = c 10:229 rwm
163
 
+#tun
164
 
+lxc.cgroup.devices.allow = c 10:200 rwm
165
 
+#full
166
 
+lxc.cgroup.devices.allow = c 1:7 rwm
167
 
+#hpet
168
 
+lxc.cgroup.devices.allow = c 10:228 rwm
169
 
+#kvm
170
 
+lxc.cgroup.devices.allow = c 10:232 rwm
171
 
+EOF
172
 
+
173
 
+    cat <<EOF > $path/fstab
174
 
+proc            $rootfs/proc         proc    nodev,noexec,nosuid 0 0
175
 
+sysfs           $rootfs/sys          sysfs defaults  0 0
176
 
+EOF
177
 
+
178
 
+    return 0
179
 
+}
180
 
+
181
 
+usage()
182
 
+{
183
 
+    cat <<EOF
184
 
+$1 -h|--help [-a|--arch] [-F | --flush-cache] [-r|--release <release>]
185
 
+release: lucid | maverick | natty | oneiric | precise
186
 
+arch: amd64 or i386: defaults to host arch
187
 
+EOF
188
 
+    return 0
189
 
+}
190
 
+
191
 
+options=$(getopt -o a:hp:r:n:Fi:C -l arch:,help,path:,release:,name:,flush-cache,hostid:,cloud -- "$@")
192
 
+if [ $? -ne 0 ]; then
193
 
+    usage $(basename $0)
194
 
+    exit 1
195
 
+fi
196
 
+eval set -- "$options"
197
 
+
198
 
+release=lucid
199
 
+if [ -f /etc/lsb-release ]; then
200
 
+    . /etc/lsb-release
201
 
+    case "$DISTRIB_CODENAME" in
202
 
+        lucid|maverick|natty|oneiric|precise)
203
 
+            release=$DISTRIB_CODENAME
204
 
+        ;;
205
 
+    esac
206
 
+fi
207
 
+
208
 
+arch=$(arch)
209
 
+
210
 
+# Code taken from debootstrap
211
 
+if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
212
 
+    arch=`/usr/bin/dpkg --print-architecture`
213
 
+elif type udpkg >/dev/null 2>&1 && udpkg --print-architecture >/dev/null 2>&1; then
214
 
+    arch=`/usr/bin/udpkg --print-architecture`
215
 
+else
216
 
+    arch=$(arch)
217
 
+    if [ "$arch" = "i686" ]; then
218
 
+        arch="i386"
219
 
+    elif [ "$arch" = "x86_64" ]; then
220
 
+        arch="amd64"
221
 
+    elif [ "$arch" = "armv7l" ]; then
222
 
+        arch="armel"
223
 
+    fi
224
 
+fi
225
 
+
226
 
+hostarch=$arch
227
 
+cloud=0
228
 
+flushcache=0
229
 
+while true
230
 
+do
231
 
+    case "$1" in
232
 
+    -h|--help)      usage $0 && exit 0;;
233
 
+    -p|--path)      path=$2; shift 2;;
234
 
+    -n|--name)      name=$2; shift 2;;
235
 
+    -F|--flush-cache) flushcache=1; shift 1;;
236
 
+    -r|--release)   release=$2; shift 2;;
237
 
+    -a|--arch)      arch=$2; shift 2;;
238
 
+    -i|--hostid)    host_id=$2; shift 2;;
239
 
+    -u|--userdata)  userdata=$2; shift 2;;
240
 
+    -C|--cloud)     cloud=1; shift 1;;
241
 
+    --)             shift 1; break ;;
242
 
+        *)              break ;;
243
 
+    esac
244
 
+done
245
 
+
246
 
+if [ "$arch" == "i686" ]; then
247
 
+    arch=i386
248
 
+fi
249
 
+
250
 
+if [ $hostarch = "i386" -a $arch = "amd64" ]; then
251
 
+    echo "can't create amd64 container on i386"
252
 
+    exit 1
253
 
+fi
254
 
+
255
 
+if [ $arch != "i386" -a $arch != "amd64" ]; then
256
 
+    echo "Only i386 and amd64 are supported by the ubuntu cloud template."
257
 
+    exit 1
258
 
+fi
259
 
+
260
 
+if [ -z "$path" ]; then
261
 
+    echo "'path' parameter is required"
262
 
+    exit 1
263
 
+fi
264
 
+
265
 
+if [ "$(id -u)" != "0" ]; then
266
 
+    echo "This script should be run as 'root'"
267
 
+    exit 1
268
 
+fi
269
 
+
270
 
+rootfs=$path/rootfs
271
 
+
272
 
+type ubuntu-cloudimg-query
273
 
+type wget
274
 
+
275
 
+# determine the url, tarball, and directory names
276
 
+# download if needed
277
 
+cache="/var/cache/lxc/cloud-$release"
278
 
+
279
 
+mkdir -p $cache
280
 
+
281
 
+url1=`ubuntu-cloudimg-query precise daily $arch --format "%{url}\n"`
282
 
+url2=`echo $url1 | sed -e 's/.tar.gz/-root\0/'`
283
 
+filename=`basename $url2`
284
 
+
285
 
+mkdir -p /var/lock/subsys/
286
 
+(
287
 
+    flock -n -x 200
288
 
+
289
 
+    cd $cache
290
 
+    if [ $flushcache -eq 1 ]; then
291
 
+        echo "Clearing the cached images"
292
 
+        rm -f $filename
293
 
+    fi
294
 
+
295
 
+    if [ ! -f $filename ]; then
296
 
+        wget $url2
297
 
+    fi
298
 
+
299
 
+    echo "Extracting rootfs"
300
 
+    mkdir -p $rootfs
301
 
+    cd $rootfs
302
 
+    tar -zxf $cache/$filename
303
 
+
304
 
+
305
 
+    if [ $cloud -eq 0 ]; then
306
 
+       echo "Configuring for running outside of a cloud environment"
307
 
+       echo "If you want to configure for a cloud evironment, please use '-- -C' to create the container"
308
 
+
309
 
+       seed_d=$rootfs/var/lib/cloud/seed/nocloud-net
310
 
+       rhostid=$(uuidgen | cut -c -8)
311
 
+        host_id=${hostid:-$rhostid}
312
 
+        mkdir -p $seed_d
313
 
+
314
 
+       cat > "$seed_d/meta-data" <<EOF
315
 
+instance_id: lxc-$host_id
316
 
+EOF
317
 
+
318
 
+       if [ ! -f $userdata ]; then
319
 
+               cp $userdata $seed_d/user-data
320
 
+       else
321
 
+               echo "#cloud-config" > $seed_d/user-data
322
 
+               if [ -z "$MIRROR" ]; then
323
 
+                       MIRROR="http://archive.ubuntu.com/ubuntu"
324
 
+               fi
325
 
+               echo "apt-mirror: $MIRROR" >> $seed_d/user-data
326
 
+       fi
327
 
+
328
 
+       chroot $rootfs /usr/sbin/usermod -U ubuntu
329
 
+       echo "Please login as user ubuntu with password ubuntu."
330
 
+
331
 
+   else
332
 
+
333
 
+       echo "Configured for running in a cloud environment."
334
 
+       echo "If you do not have a meta-data service, this container will likely be useless."
335
 
+
336
 
+   fi
337
 
+
338
 
+) 200>/var/lock/subsys/lxc-ubucloud
339
 
+
340
 
+copy_configuration $path $rootfs $name $arch
341
 
+
342
 
+echo "Container $name created."
343
 
+exit 0