~ubuntu-branches/ubuntu/quantal/lxc/quantal-201206191543

« back to all changes in this revision

Viewing changes to debian/patches/0083-ubuntu-simplify-template

  • Committer: Package Import Robot
  • Author(s): Stéphane Graber
  • Date: 2012-05-18 19:05:44 UTC
  • Revision ID: package-import@ubuntu.com-20120518190544-d2ejphrownapveg1
Tags: 0.8.0~rc1-4ubuntu8
* Update lxc-ubuntu:
  - Update list of extra packages for debootstrap to only include vim
    and ssh. The others were only relevant when we were still using the
    minbase variant. (LP: #996839)
  - Drop any hardcoded Ubuntu version check and replace by feature
    checks instead.
  - Format lxc-ubuntu to consistently use 4-spaces indent instead of
    mixed spaces/tabs.
  - Update default /etc/network/interfaces to include the header.
  - Update default /etc/hosts to match that of a regular Ubuntu system.
  - Drop support for end-of-life releases (gutsy on sparc).
  - Make sure /etc/resolv.conf is valid before running any apt command.
  - Update template help message for release and arch parameters.
  - Switch default Ubuntu version from lucid to precise.
* Update lxc-start-ephemeral:
  - Remove lxc-ip and replace it by a call to "ip netns" until we have
    an extended lxc-attach we can use for that.
  - Fix a race in lxc-start-ephemeral where the container isn't yet
    running when trying to get its IPs.
  - Update a few calls so that lxc-start-ephemeral can be called as a
    user (ensure consistent usage of sudo across the script).
* Add new lxc-default-with-nesting apparmor profile, allowing nested
  containers.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Description: Simplify the Ubuntu template a bit
 
2
     - Update list of extra packages for debootstrap to only include vim
 
3
       and ssh. The others were only relevant when we were still using the
 
4
       minbase variant. (LP: #996839)
 
5
     - Drop any hardcoded Ubuntu version check and replace by feature
 
6
       checks instead.
 
7
     - Format lxc-ubuntu to consistently use 4-spaces indent instead of
 
8
       mixed spaces/tabs.
 
9
     - Update default /etc/network/interfaces to include the header.
 
10
     - Update default /etc/hosts to match that of a regular Ubuntu system.
 
11
     - Drop support for end-of-life releases (gutsy on sparc).
 
12
     - Make sure /etc/resolv.conf is valid before running any apt command.
 
13
     - Update template help message for release and arch parameters.
 
14
     - Switch default Ubuntu version from lucid to precise.
 
15
Author: Stéphane Graber <stgraber@ubuntu.com>
 
16
 
 
17
Origin: vendor
 
18
Forwarded: no
 
19
 
 
20
--- lxc-0.8.0~rc1.orig/templates/lxc-ubuntu.in
 
21
+++ lxc-0.8.0~rc1/templates/lxc-ubuntu.in
 
22
@@ -38,6 +38,10 @@ configure_ubuntu()
 
23
 
 
24
    # configure the network using the dhcp
 
25
     cat <<EOF > $rootfs/etc/network/interfaces
 
26
+# This file describes the network interfaces available on your system
 
27
+# and how to activate them. For more information, see interfaces(5).
 
28
+
 
29
+# The loopback network interface
 
30
 auto lo
 
31
 iface lo inet loopback
 
32
 
 
33
@@ -51,10 +55,18 @@ $hostname
 
34
 EOF
 
35
     # set minimal hosts
 
36
     cat <<EOF > $rootfs/etc/hosts
 
37
-127.0.0.1 localhost $hostname
 
38
+127.0.0.1   localhost
 
39
+127.0.1.1   $hostname
 
40
+
 
41
+# The following lines are desirable for IPv6 capable hosts
 
42
+::1     ip6-localhost ip6-loopback
 
43
+fe00::0 ip6-localnet
 
44
+ff00::0 ip6-mcastprefix
 
45
+ff02::1 ip6-allnodes
 
46
+ff02::2 ip6-allrouters
 
47
 EOF
 
48
 
 
49
-    if [ "$release" != "precise" ] && [ "$release" != "quantal" ]; then
 
50
+    if [ ! -f $rootfs/etc/init/container-detect.conf ]; then
 
51
         # suppress log level output for udev
 
52
         sed -i "s/=\"err\"/=0/" $rootfs/etc/udev/udev.conf
 
53
 
 
54
@@ -78,7 +90,9 @@ finalize_user()
 
55
 {
 
56
     user=$1
 
57
 
 
58
-    if [ "$release" = "precise" ] || [ "$release" = "quantal" ]; then
 
59
+    sudo_version=$(chroot $rootfs dpkg-query -W -f='${Version}' sudo)
 
60
+
 
61
+    if chroot $rootfs dpkg --compare-versions $sudo_version gt "1.8.3p1-1"; then
 
62
         groups="sudo"
 
63
     else
 
64
         groups="sudo admin"
 
65
@@ -90,13 +104,14 @@ finalize_user()
 
66
     done
 
67
 
 
68
     if [ -n "$auth_key" -a -f "$auth_key" ]; then
 
69
-       u_path="/home/${user}/.ssh"
 
70
-       root_u_path="$rootfs/$u_path"
 
71
-       mkdir -p $root_u_path
 
72
-       cp $auth_key "$root_u_path/authorized_keys"
 
73
-       chroot $rootfs chown -R ${user}: "$u_path"
 
74
+        u_path="/home/${user}/.ssh"
 
75
+        root_u_path="$rootfs/$u_path"
 
76
 
 
77
-       echo "Inserted SSH public key from $auth_key into /home/${user}/.ssh/authorized_keys"
 
78
+        mkdir -p $root_u_path
 
79
+        cp $auth_key "$root_u_path/authorized_keys"
 
80
+        chroot $rootfs chown -R ${user}: "$u_path"
 
81
+
 
82
+        echo "Inserted SSH public key from $auth_key into /home/${user}/.ssh/authorized_keys"
 
83
     fi
 
84
     return 0
 
85
 }
 
86
@@ -112,18 +127,6 @@ write_sourceslist()
 
87
             MIRROR=${MIRROR:-http://archive.ubuntu.com/ubuntu}
 
88
             SECURITY_MIRROR=${SECURITY_MIRROR:-http://security.ubuntu.com/ubuntu}
 
89
             ;;
 
90
-      sparc)
 
91
-            case $SUITE in
 
92
-              gutsy)
 
93
-            MIRROR=${MIRROR:-http://archive.ubuntu.com/ubuntu}
 
94
-            SECURITY_MIRROR=${SECURITY_MIRRORMIRROR:-http://security.ubuntu.com/ubuntu}
 
95
-            ;;
 
96
-              *)
 
97
-            MIRROR=${MIRROR:-http://ports.ubuntu.com/ubuntu-ports}
 
98
-            SECURITY_MIRROR=${SECURITY_MIRROR:-http://ports.ubuntu.com/ubuntu-ports}
 
99
-            ;;
 
100
-            esac
 
101
-            ;;
 
102
       *)
 
103
             MIRROR=${MIRROR:-http://ports.ubuntu.com/ubuntu-ports}
 
104
             SECURITY_MIRROR=${SECURITY_MIRROR:-http://ports.ubuntu.com/ubuntu-ports}
 
105
@@ -150,13 +153,7 @@ download_ubuntu()
 
106
     arch=$2
 
107
     release=$3
 
108
 
 
109
-    if [ $release = "lucid" ]; then
 
110
-        packages=dialog,apt,apt-utils,resolvconf,iproute,inetutils-ping,vim,dhcp3-client,ssh,lsb-release,gnupg
 
111
-    elif [ $release = "natty" ]; then
 
112
-        packages=dialog,apt,apt-utils,resolvconf,iproute,inetutils-ping,vim,isc-dhcp-client,isc-dhcp-common,ssh,lsb-release,gnupg,netbase
 
113
-    else
 
114
-        packages=dialog,apt,apt-utils,iproute,inetutils-ping,vim,isc-dhcp-client,isc-dhcp-common,ssh,lsb-release,gnupg,netbase,ubuntu-keyring
 
115
-    fi
 
116
+    packages=vim,ssh
 
117
     echo "installing packages: $packages"
 
118
 
 
119
     # check the mini ubuntu was not already downloaded
 
120
@@ -258,39 +255,40 @@ install_ubuntu()
 
121
     flushcache=$3
 
122
     cache="/var/cache/lxc/$release"
 
123
     mkdir -p /var/lock/subsys/
 
124
+
 
125
     (
 
126
-       flock -n -x 200
 
127
-       if [ $? -ne 0 ]; then
 
128
-           echo "Cache repository is busy."
 
129
-           return 1
 
130
-       fi
 
131
-
 
132
-
 
133
-    if [ $flushcache -eq 1 ]; then
 
134
-        echo "Flushing cache..."
 
135
-        rm -rf "$cache/partial-$arch"
 
136
-        rm -rf "$cache/rootfs-$arch"
 
137
-    fi
 
138
-
 
139
-       echo "Checking cache download in $cache/rootfs-$arch ... "
 
140
-       if [ ! -e "$cache/rootfs-$arch" ]; then
 
141
-           download_ubuntu $cache $arch $release
 
142
-           if [ $? -ne 0 ]; then
 
143
-               echo "Failed to download 'ubuntu $release base'"
 
144
-               return 1
 
145
-           fi
 
146
-       fi
 
147
-
 
148
-       echo "Copy $cache/rootfs-$arch to $rootfs ... "
 
149
-       copy_ubuntu $cache $arch $rootfs
 
150
-       if [ $? -ne 0 ]; then
 
151
-           echo "Failed to copy rootfs"
 
152
-           return 1
 
153
-       fi
 
154
+        flock -n -x 200
 
155
+        if [ $? -ne 0 ]; then
 
156
+            echo "Cache repository is busy."
 
157
+            return 1
 
158
+        fi
 
159
 
 
160
-       return 0
 
161
 
 
162
-       ) 200>/var/lock/subsys/lxc
 
163
+        if [ $flushcache -eq 1 ]; then
 
164
+            echo "Flushing cache..."
 
165
+            rm -rf "$cache/partial-$arch"
 
166
+            rm -rf "$cache/rootfs-$arch"
 
167
+        fi
 
168
+
 
169
+        echo "Checking cache download in $cache/rootfs-$arch ... "
 
170
+        if [ ! -e "$cache/rootfs-$arch" ]; then
 
171
+            download_ubuntu $cache $arch $release
 
172
+            if [ $? -ne 0 ]; then
 
173
+                echo "Failed to download 'ubuntu $release base'"
 
174
+                return 1
 
175
+            fi
 
176
+        fi
 
177
+
 
178
+        echo "Copy $cache/rootfs-$arch to $rootfs ... "
 
179
+        copy_ubuntu $cache $arch $rootfs
 
180
+        if [ $? -ne 0 ]; then
 
181
+            echo "Failed to copy rootfs"
 
182
+            return 1
 
183
+        fi
 
184
+
 
185
+        return 0
 
186
+
 
187
+    ) 200>/var/lock/subsys/lxc
 
188
 
 
189
     return $?
 
190
 }
 
191
@@ -308,7 +306,7 @@ copy_configuration()
 
192
     fi
 
193
 
 
194
     ttydir=""
 
195
-    if [ $release = "precise" ] || [ $release = "quantal" ]; then
 
196
+    if [ ! -f $rootfs/etc/init/container-detect.conf ]; then
 
197
         ttydir=" lxc"
 
198
     fi
 
199
 
 
200
@@ -371,8 +369,8 @@ sysfs           sys          sysfs defau
 
201
 EOF
 
202
 
 
203
     if [ $? -ne 0 ]; then
 
204
-       echo "Failed to add configuration"
 
205
-       return 1
 
206
+        echo "Failed to add configuration"
 
207
+        return 1
 
208
     fi
 
209
 
 
210
     return 0
 
211
@@ -449,11 +447,11 @@ EOF
 
212
 
 
213
     # reconfigure some services
 
214
     if [ -z "$LANG" ]; then
 
215
-       chroot $rootfs locale-gen en_US.UTF-8
 
216
-       chroot $rootfs update-locale LANG=en_US.UTF-8
 
217
+        chroot $rootfs locale-gen en_US.UTF-8
 
218
+        chroot $rootfs update-locale LANG=en_US.UTF-8
 
219
     else
 
220
-       chroot $rootfs locale-gen $LANG
 
221
-       chroot $rootfs update-locale LANG=$LANG
 
222
+        chroot $rootfs locale-gen $LANG
 
223
+        chroot $rootfs update-locale LANG=$LANG
 
224
     fi
 
225
 
 
226
     # remove pointless services in a container
 
227
@@ -479,21 +477,25 @@ post_process()
 
228
 
 
229
     if [ $trim_container -eq 1 ]; then
 
230
         trim $rootfs $release
 
231
-    elif [ $release = "lucid" -o $release = "natty" \
 
232
-               -o $release = "oneiric" ]; then
 
233
+    elif [ ! -f $rootfs/etc/init/container-detect.conf ]; then
 
234
+        # Make sure we have a working resolv.conf
 
235
+        cresolvonf="${rootfs}/etc/resolv.conf"
 
236
+        mv $cresolvonf ${cresolvonf}.lxcbak
 
237
+        cat /etc/resolv.conf > ${cresolvonf}
 
238
+
 
239
         # for lucid, if not trimming, then add the ubuntu-virt
 
240
         # ppa and install lxcguest
 
241
         if [ $release = "lucid" ]; then
 
242
             chroot $rootfs apt-get install --force-yes -y python-software-properties
 
243
             chroot $rootfs add-apt-repository ppa:ubuntu-virt/ppa
 
244
         fi
 
245
-       cresolvonf="${rootfs}/etc/resolv.conf"
 
246
-       mv $cresolvonf ${cresolvonf}.lxcbak
 
247
-        cat /etc/resolv.conf > ${cresolvonf}
 
248
+
 
249
         chroot $rootfs apt-get update
 
250
         chroot $rootfs apt-get install --force-yes -y lxcguest
 
251
-       rm -f ${cresolvonf}
 
252
-       mv ${cresolvonf}.lxcbak ${cresolvonf}
 
253
+
 
254
+        # Restore old resolv.conf
 
255
+        rm -f ${cresolvonf}
 
256
+        mv ${cresolvonf}.lxcbak ${cresolvonf}
 
257
     fi
 
258
 
 
259
     # If the container isn't running a native architecture, setup multiarch
 
260
@@ -518,11 +520,11 @@ post_process()
 
261
         chroot $rootfs apt-get install --force-yes -y --no-install-recommends upstart:${hostarch} mountall:${hostarch} iproute:${hostarch} isc-dhcp-client:${hostarch}
 
262
     fi
 
263
 
 
264
-    # rmdir /dev/shm in precise and quantal containers.
 
265
+    # rmdir /dev/shm for containers that have /run/shm
 
266
     # I'm afraid of doing rm -rf $rootfs/dev/shm, in case it did
 
267
     # get bind mounted to the host's /run/shm.  So try to rmdir
 
268
     # it, and in case that fails move it out of the way.
 
269
-    if [ $release = "precise" ] || [ $release = "quantal" ]; then
 
270
+    if [ -d $rootfs/run/shm ]; then
 
271
         [ -d "$rootfs/dev/shm" ] && rmdir $rootfs/dev/shm
 
272
         [ -e "$rootfs/dev/shm" ] && mv $rootfs/dev/shm $rootfs/dev/shm.bak
 
273
         ln -s /run/shm $rootfs/dev/shm
 
274
@@ -553,11 +555,12 @@ do_bindhome()
 
275
     # bind-mount the user's path into the container's /home
 
276
     h=`getent passwd $user | cut -d: -f 6`
 
277
     mkdir -p $rootfs/$h
 
278
-       # use relative path in container
 
279
-       h2=${h#/}
 
280
-       while [ ${h2:0:1} = "/" ]; do
 
281
-               h2=${h2#/}
 
282
-       done
 
283
+
 
284
+    # use relative path in container
 
285
+    h2=${h#/}
 
286
+    while [ ${h2:0:1} = "/" ]; do
 
287
+        h2=${h2#/}
 
288
+    done
 
289
     echo "$h $h2 none bind 0 0" >> $path/fstab
 
290
 
 
291
     # Make sure the group exists in container
 
292
@@ -571,12 +574,12 @@ usage()
 
293
     cat <<EOF
 
294
 $1 -h|--help [-a|--arch] [-b|--bindhome <user>] [--trim] [-d|--debug]
 
295
    [-F | --flush-cache] [-r|--release <release>] [ -S | --auth-key <keyfile>]
 
296
-release: lucid | natty | oneiric | precise | quantal
 
297
+release: the ubuntu release (e.g. precise): defaults to host release on ubuntu, otherwise uses latest LTS
 
298
 trim: make a minimal (faster, but not upgrade-safe) container
 
299
 bindhome: bind <user>'s home into the container
 
300
           The ubuntu user will not be created, and <user> will have
 
301
-         sudo access.
 
302
-arch: amd64 or i386: defaults to host arch
 
303
+          sudo access.
 
304
+arch: the container architecture (e.g. amd64): defaults to host arch
 
305
 auth-key: SSH Public key file to inject into container
 
306
 EOF
 
307
     return 0
 
308
@@ -589,14 +592,12 @@ if [ $? -ne 0 ]; then
 
309
 fi
 
310
 eval set -- "$options"
 
311
 
 
312
-release=lucid
 
313
+release=precise # Default to the last Ubuntu LTS release for non-Ubuntu systems
 
314
 if [ -f /etc/lsb-release ]; then
 
315
     . /etc/lsb-release
 
316
-    case "$DISTRIB_CODENAME" in
 
317
-        lucid|natty|oneiric|precise|quantal)
 
318
-            release=$DISTRIB_CODENAME
 
319
-        ;;
 
320
-    esac
 
321
+    if [ "$DISTRIB_ID" = "Ubuntu" ]; then
 
322
+        release=$DISTRIB_CODENAME
 
323
+    fi
 
324
 fi
 
325
 
 
326
 bindhome=
 
327
@@ -641,7 +642,7 @@ do
 
328
 done
 
329
 
 
330
 if [ $debug -eq 1 ]; then
 
331
-       set -x
 
332
+    set -x
 
333
 fi
 
334
 
 
335
 if [ -n "$bindhome" ]; then