summaryrefslogtreecommitdiffstats
path: root/mountDiskSetupVserver.py
blob: bda8371fc6c3559b55e2472707cbe60d8bef3f85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/python3
#coding: UTF-8
import optparse
from shared import *
# vars
iscsiTargetIp='10.0.0.1'
iscsiDate='2011-04'
defaultImage='/root/vserver-template-v2.tar.bz2'

# configure known options
usage = "usage: %prog VMNAME IP [options]"
parser = optparse.OptionParser(usage=usage)
parser.add_option("-s", "--size", dest="size", default=defaultDiskSize,
                    help="SIZE of vm root disk", metavar="SIZE")
parser.add_option("-v", "--verbose", dest="verbose",
                    action="store_true",  default=False,
                    help="should I do output")
(options, args) = parser.parse_args()

# check if required args are given
if len(args) < 1:
    parser.print_usage()
    logErr("a vm-name must be given!")
    sys.exit(2)
elif len(args) > 1:
    parser.print_usage()
    logErr("to many arguments given!")
    sys.exit(2)

vmName = parseVmName(args[0])
ip, ipLastBlock = parseIp(args[1])

cmds = [
    [ 'iscsiadm', '-m', 'discovery', '-t', 'st', '-p', iscsiTargetIp ],
# maybe i schould grep if, the device was in the output
#       10.0.0.1:3260,1 iqn.2011-04.de.spline:<name>
    [ 'iscsiadm', '-m', 'node', '-T', 'iqn.' + iscsiDate +
        '.de.spline:' + vmName, '-p', iscsiTargetIp, '--login' ],
    [ 'mkdir', '/vservers/' + vmName ],
    [ 'mount', '/dev/disk/by-label/' + vmName, '/vservers/' + vmName +],
    [   'vserver', vmName, 'build',
        '-m', 'template',
        '--interface', 'eth0:' + ip + '/25',
        '--initstyle', 'sysv',
        '--context', str(ipLastBlock)
        '--hostname', vmName,
        '--',
        '--template', defaultImage,
        '-d', 'debian' ]
]



# iscsi meta-daten im vserver-etc verzeichnis hinzufuegen
$ mkdir /etc/vservers/<name>/iscsi/
$ echo "10.0.0.1" > /etc/vservers/<name>/iscsi/portal
$ echo "iqn.<YYYY>-<MM>.de.spline:<name>" > /etc/vservers/<name>/iscsi/target
# ipv6 adresse muss noch manuell hinzugefuegt werden, die ipv4 wurde durch --interface beim vserver build erstellt
# vermutlich ist das eine dmz maschine, daher der prefix BABE
$ mkdir /etc/vservers/<name>/interfaces/1
$ echo "2001:6f8:1c3c:babe::<IP>:1" > /etc/vservers/<name>/interfaces/1/ip
$ echo "64" > /etc/vservers/<name>/interfaces/1/prefix
$ echo "eth0" > /etc/vservers/<name>/interfaces/1/dev

# neue (2011-04) vserver-utils mit "mark" benutzen, damit zB automatisch distributions-spezifische updates gefahren
# werden können - falls das nicht gewuenschst ist, koennen 2. und 3. übersprungen werden
$ cd /etc/vservers/<name>/apps/init
$ echo "pang" > mark
$ echo "debian" >> mark
$ echo "auto-update" >> mark

# die dem vserver zugehörige disk erstmal unmounten und dann in die fstab des vservers einfuegen, damit
# sie beim starten benutzt wird
    [ 'umount', '/vservers/' + vmName ]
    [ 'vserver', vmName, 'start' ]

execPlan = ExecutionPlan(cmds,vmName)
execPlan.execute_all()

logInfo("your vserver is up and running!")
logInfo("you might enter it by: vserver " + vmName + ' enter')

sys.exit(0