/[sysadmin-cookbook]/recepies/lxc/ve2lxc.sh
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /recepies/lxc/ve2lxc.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 206 - (hide annotations)
Mon May 10 12:50:50 2010 UTC (13 years, 11 months ago) by dpavlin
File MIME type: application/x-sh
File size: 2424 byte(s)
remove function which is bashisam (and thus we work under dash as /bin/sh)

1 dpavlin 86 #!/bin/sh -x
2    
3 dpavlin 151 test -z "$1" && echo "usage: $0 /path/to/ve/private [10.60.0.253 [hostname]]" && exit
4 dpavlin 86
5     dir=$1
6 dpavlin 92 ip=$2
7 dpavlin 151 hostname=$3
8 dpavlin 111 netmask=`grep netmask /etc/network/interfaces | head -1 | sed 's/^.*netmask *//'`
9     gateway=`grep gateway /etc/network/interfaces | head -1 | sed 's/^.*gateway *//'`
10 dpavlin 86
11 dpavlin 151 test -z "$ip" && ip=10.60.0.252
12     test -z "$hostname" && hostname=ve2lxc
13 dpavlin 92
14 dpavlin 86 path=/$dir/etc/inittab
15     tmp=/tmp/inittab
16    
17     cp $path $tmp || exit
18    
19 dpavlin 206 append() {
20 dpavlin 86 if ! grep "$1" $path ; then
21     echo "$1" >> $tmp
22     fi
23     }
24    
25     append "z6:6:respawn:/sbin/sulogin"
26     append "1:2345:respawn:/sbin/getty 38400 console"
27     append "c1:12345:respawn:/sbin/getty 38400 tty1 linux"
28     append "c2:12345:respawn:/sbin/getty 38400 tty2 linux"
29     append "c3:12345:respawn:/sbin/getty 38400 tty3 linux"
30     append "c4:12345:respawn:/sbin/getty 38400 tty4 linux"
31    
32     if ! diff -uw $path $tmp ; then
33     cp $path $path.old && mv $tmp $path
34     fi
35    
36 dpavlin 151 lxc-stop -n $hostname
37     lxc-destroy -n $hostname
38 dpavlin 86
39     test -d /cgroup || mkdir /cgroup
40 dpavlin 93 grep /cgroup /etc/fstab || echo "cgroup /cgroup cgroup rw 0 0" >> /etc/fstab
41 dpavlin 86
42 dpavlin 92 grep eth0 $dir/etc/network/interfaces || cat << __interfaces__ > $dir/etc/network/interfaces
43     auto eth0 lo
44    
45     iface lo inet loopback
46    
47     iface eth0 inet static
48     address $ip
49     netmask $netmask
50 dpavlin 111 gateway $gateway
51 dpavlin 92
52     __interfaces__
53    
54 dpavlin 93 echo $hostname > $dir/etc/hostname
55    
56 dpavlin 112 echo "$ip $hostname" >> $dir/etc/hosts
57    
58 dpavlin 151 conf=/tmp/$hostname.conf
59 dpavlin 93
60     cat << __lxc__ > $conf
61     lxc.utsname = $hostname
62     lxc.tty = 4
63     lxc.pts = 1024
64 dpavlin 192
65 dpavlin 93 lxc.network.type = veth
66     lxc.network.flags = up
67     lxc.network.link = br0
68     lxc.network.name = eth0
69     lxc.network.mtu = 1500
70 dpavlin 192 #lxc.network.hwaddr = AC:DE:48:00:00:01
71     # interface visible on host, part of bridge
72     #lxc.network.veth.pair = veth0
73    
74 dpavlin 93 #lxc.mount = $MNTFILE
75     lxc.rootfs = $dir
76 dpavlin 192 # lxc.mount.entry=/opt /virtual/lxc/rootfs/opt none ro,bind 0 0
77    
78 dpavlin 93 lxc.cgroup.devices.deny = a
79     # /dev/null and zero
80     lxc.cgroup.devices.allow = c 1:3 rwm
81     lxc.cgroup.devices.allow = c 1:5 rwm
82     # consoles
83     lxc.cgroup.devices.allow = c 5:1 rwm
84     lxc.cgroup.devices.allow = c 5:0 rwm
85     lxc.cgroup.devices.allow = c 4:0 rwm
86     lxc.cgroup.devices.allow = c 4:1 rwm
87     # /dev/{,u}random
88     lxc.cgroup.devices.allow = c 1:9 rwm
89     lxc.cgroup.devices.allow = c 1:8 rwm
90     lxc.cgroup.devices.allow = c 136:* rwm
91     lxc.cgroup.devices.allow = c 5:2 rwm
92     # rtc
93     lxc.cgroup.devices.allow = c 254:0 rwm
94     __lxc__
95    
96 dpavlin 110 cp -v /etc/resolv.conf /$dir/etc/resolv.conf
97    
98 dpavlin 86 mount | grep /cgroup || mount /cgroup || exit
99    
100 dpavlin 151 lxc-create -n $hostname -f $conf && lxc-start -n $hostname

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26