-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasho_vm.sh
executable file
·135 lines (117 loc) · 2.7 KB
/
basho_vm.sh
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
usage()
{
cat << EOF
usage: $0 options
This script will create and launch a new VM.
OPTIONS:
-h Show this message
-d Show debug messages
-n The guest VM name
-i The guest VM IP
-c Number of virtual CPUs to allocate. Default: 1
-m Amount of memory in MB to allocate the VM. Default: 1024
-r The size in MB of the root partition. Default 5120
-s The size in MB of the swap partition. Default: 1024
EOF
}
NAME=
IP=
MEM=1024
CPU=1
ROOTSIZE=5120
SWAPSIZE=1024
VERBOSITY="--quiet"
while getopts "hdn:c:i:m:n:r:s:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
d)
VERBOSITY="--verbose --debug"
;;
c)
CPU=$OPTARG
;;
i)
IP=$OPTARG
;;
m)
MEM=$OPTARG
;;
n)
NAME=$OPTARG
;;
r)
ROOTSIZE=$OPTARG
;;
s)
SWAPSIZE=$OPTARG
;;
?)
usage
exit
;;
esac
done
if [[ -z $NAME ]] || [[ -z $IP ]]
then
usage
exit 1
fi
NAME=$(echo $NAME | cut -f1 -d '.').bos1
IMAGE_DIR=/var/lib/libvirt/images/$NAME
echo "Destroying previous environment named ${NAME}"
echo "ctrl-c now to abort"
sleep 3
virsh destroy $NAME 2>&1 > /dev/null
virsh undefine $NAME 2>&1 > /dev/null
echo
echo "VM Parameters:"
echo " - Name: ${NAME}"
echo " - IP: ${IP}"
echo " - CPUs: ${CPU}"
echo " - RAM: ${MEM}"
echo " - Root Size: ${ROOTSIZE}"
echo " - Swap Size: ${SWAPSIZE}"
echo
sleep 3
echo "Creating VM..."
echo
ubuntu-vm-builder kvm -o --tmpfs - --suite=precise --flavour=virtual --arch=amd64 --components=main,universe \
--hostname=${NAME} --mem=${MEM} --cpus=${CPU} \
--dest ${IMAGE_DIR} --rootsize=${ROOTSIZE} --swapsize=${SWAPSIZE} \
--ip=${IP} --bridge=br0 --mask=255.255.248.0 --gw=10.0.27.1 --bcast=10.0.31.255 --net=10.0.27.0/21 --dns=10.0.27.102 --domain=bos1 \
--addpkg=openssh-server --addpkg=acpid --addpkg=sysstat --addpkg=opscode-keyring --addpkg=chef \
--addpkg=ntp --addpkg=curl --addpkg=wget --addpkg=vim --addpkg=git-core --lang=en_US.UTF-8 \
--copy=/usr/local/share/kvm/templates/manifest.txt \
--firstboot=/usr/local/share/kvm/files/firstboot.sh \
--libvirt=qemu:///system ${VERBOSITY}
if [ $? -eq 0 ]
then
echo
echo "Setting DNS..."
unset LANG
nsupdate -k /var/basho/dns/devops.private << _ACEOF
server ns1.bos1
zone bos1
update delete ${NAME}. A
update add ${NAME}. 7200 A $IP
send
_ACEOF
echo
echo "Starting VM..."
echo
virsh autostart $NAME
virsh start $NAME
echo "VM creation complete."
echo " - Name: ${NAME}"
echo " - IP: ${IP}"
echo " - CPUs: ${CPU}"
echo " - RAM: ${MEM}"
echo " - Root Size: ${ROOTSIZE}"
echo " - Swap Size: ${SWAPSIZE}"
echo
fi