-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfabfile.py
More file actions
104 lines (84 loc) · 2.68 KB
/
fabfile.py
File metadata and controls
104 lines (84 loc) · 2.68 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from fabric.api import *
from fabric.decorators import hosts, parallel, serial
import fabric.contrib.files
from fabric.operations import reboot
import time
import psutil
import os
import logging
#Disable annoyting log messages.
logging.basicConfig(level=logging.ERROR)
#This makes the paramiko logger less verbose
para_log=logging.getLogger('paramiko.transport')
para_log.setLevel(logging.ERROR)
env.keepalive = True
env.roledefs = {
'hypervisors': ['maxim@stream1','maxim@stream2', 'maxim@stream3'],
'brinst': ['maxim@stream28'],
}
hostvms = { 'maxim@stream1' : ['controller'],
'maxim@stream2' : ['network'],
'maxim@stream3' : ['compute'],
}
###VM MANAGEMENT###
@roles('hypervisors')
def definevms():
vm = hostvms[env.host_string][0]
run('virsh define ' + 'qemu/qemu' + env.host_string.split('stream')[1] + '/'+ vm + '.xml')
@roles('hypervisors')
def undefinevms():
vm = hostvms[env.host_string][0]
run('virsh undefine '+ vm)
@roles('hypervisors')
def startvms():
vm = hostvms[env.host_string][0]
with settings(warn_only=True):
run('virsh start ' + vm)
@roles('hypervisors')
def stopvms():
vm = hostvms[env.host_string][0]
with settings(warn_only=True):
run('virsh shutdown ' + vm)
#####KVM INSTALLATION#####
#@roles('hypervisors')
def installkvm():
with settings(warn_only=True):
sudo("apt-get install -y kvm qemu-kvm libvirt-bin virtinst", pty=True)
sudo("adduser maxim libvirtd", pty=True)
sudo("adduser maxim kvm", pty=True)
def removekvm():
with settings(warn_only=True):
sudo("apt-get remove -y kvm qemu-kvm libvirt-bin virtinst", pty=True)
#####TIME MANAGEMENT#####
#@roles('hypervisors')
def installntpserver():
with settings(warn_only=True):
sudo("apt-get install -y ntp")
def removentpserver():
with settings(warn_only=True):
sudo("apt-get remove -y ntp")
@roles('hypervisors')
def addbridge():
sudo('apt-get install -y bridge-utils')
sudo('cp /etc/network/interfaces /etc/network/interfaces.old')
put('templates/interfaces.dhcpbr0', '/tmp/interfaces')
sudo('cp /tmp/interfaces /etc/network/interfaces')
with settings(warn_only=True):
reboot()
@roles('hypervisors')
def delbridge():
sudo('cp /etc/network/interfaces.old /etc/network/interfaces')
sudo('rm /etc/network/interfaces.old')
with settings(warn_only=True):
run('rm /tmp/interfaces')
with settings(warn_only=True):
reboot()
@roles('hypervisors')
def preparehost():
execute(installkvm)
execute(installntpserver)
@roles('hypervisors')
def getdefaulthost():
execute(removekvm)
execute(removentpserver)
sudo("apt-get autoremove -y ")