summaryrefslogtreecommitdiff
path: root/other/scripts
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2016-09-16 20:59:06 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2016-09-16 20:59:06 +0200
commitcde82ec07f72c988accdd18619f94c9db5fb177a (patch)
tree5f5905bb79444fe0905193e47c32236a488d2a7e /other/scripts
parent3df750c466fceca80ac7f16694d59c6a8a13ba47 (diff)
downloadcentosauto-cde82ec07f72c988accdd18619f94c9db5fb177a.tar.gz
centosauto-cde82ec07f72c988accdd18619f94c9db5fb177a.tar.bz2
added another automatized approach using virsh toolsHEADmaster
Diffstat (limited to 'other/scripts')
-rwxr-xr-xother/scripts/centoskvm.sh158
-rwxr-xr-xother/scripts/resizevm.sh120
2 files changed, 278 insertions, 0 deletions
diff --git a/other/scripts/centoskvm.sh b/other/scripts/centoskvm.sh
new file mode 100755
index 0000000..965550d
--- /dev/null
+++ b/other/scripts/centoskvm.sh
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+#==============================================================================+
+# File name : centoskvm.sh
+# Begin : 2013-04-18
+# Last Update : 2013-04-25
+# Version : 1.0.0
+#
+# Description : Shell script used to generate a CentOS Virtual Machine image.
+#
+# Website : https://github.com/fubralimited/CentOS-KVM-Image-Tools
+#
+# Author: Nicola Asuni
+#
+# (c) Copyright:
+# Fubra Limited
+# Manor Coach House
+# Church Hill
+# Aldershot
+# Hampshire
+# GU12 4RQ
+# UK
+# http://www.fubra.com
+# support@fubra.com
+#
+# License:
+# Copyright (C) 2012-2013 Fubra Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# See LICENSE.TXT file for more information.
+#==============================================================================+
+
+# CONFIGURATION
+
+LIBVIRT_IMAGE_BASE=/data/libvirt
+
+# USAGE EXAMPLE:
+# sh centoskvm.sh centos-gold-master
+
+# ensure script is being run as root
+if [ `whoami` != root ]; then
+ echo "ERROR: This script must be run as root" 1>&2
+ exit 1
+fi
+
+# check for image name and kickstart file
+if [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+ echo "ERROR: No argument supplied. Please provide the following parameters:"
+ echo " <image name> [ x86_64 | i386 ] [ 5 | 6 | 7 ] [<kickstart>] [<options>]"
+ echo " being architecture and 5 6 7 being the major Centos version"
+ echo " <kickstart> provide your own optional kickstart file"
+ echo " <options> currently the only option is 'noshrink':"
+ echo " noshrink: don't skrink the image to minimal size after building"
+ exit 1
+fi
+
+# name of the image
+IMGNAME=$1
+
+# architecture
+ARCH=$2
+
+# version of Centos
+VER=$3
+
+if test "X$4" != "X"; then
+ KICKSTART=$4
+else
+ # compose the name of the kickstart file
+ KICKSTART=centos$3-$ARCH-master.cfg
+fi
+
+# some sanity checks per architecture and major release
+# and set some limits
+case ${ARCH}_${VER} in
+ i386_5|x86_64_5|i386_6|x86_64_6)
+ VM_MEMORY=512
+ ;;
+
+ x86_64_7)
+ VM_MEMORY=1024
+ ;;
+
+ i386_7|*)
+ echo "Unsupported architecture '$ARCH' and major release '$VER'" 1>&2
+ exit 1
+esac
+
+# VM image file extension
+EXT="qcow2"
+
+echo "Generating VM ..."
+
+# create image file
+virt-install \
+--name $IMGNAME \
+--ram $VM_MEMORY \
+--cpu host \
+--vcpus 1 \
+--nographics \
+--os-type=linux \
+--os-variant=rhel$VER \
+--location=http://mirror.switch.ch/ftp/mirror/centos/$VER/os/$ARCH \
+--initrd-inject=kickstarts/$KICKSTART \
+--extra-args="ks=file:/$KICKSTART text console=tty0 utf8 console=ttyS0,115200" \
+--disk path=$LIBVIRT_IMAGE_BASE/$IMGNAME.$EXT,size=10,bus=virtio,format=qcow2 \
+--force \
+--noreboot
+
+# change directory
+cd $LIBVIRT_IMAGE_BASE
+
+if test "X$5" != "Xnoshrink"; then
+
+ # reset, unconfigure a virtual machine so clones can be made
+ virt-sysprep --no-selinux-relabel -a $IMGNAME.$EXT
+
+ # SELinux: relabelling all filesystem
+ #guestfish --selinux -i $IMGNAME.$EXT <<EOF
+ #sh load_policy
+ #sh 'restorecon -R -v /'
+ #EOF
+ # fails with:
+ #*stdin*:1: libguestfs: error: sh: SELinux: Could not downgrade policy file /etc/selinux/targeted/policy/policy.24, searching for an older version.
+ #SELinux: Could not open policy file <= /etc/selinux/targeted/policy/policy.24: No such file or directory
+ # really needed?
+
+ # make a virtual machine disk sparse
+ TMPDIR=/data/tmp virt-sparsify --compress --convert qcow2 --format qcow2 $IMGNAME.$EXT $IMGNAME-sparsified.$EXT
+
+ # remove original image
+ rm -rf $IMGNAME.$EXT
+
+ # rename sparsified
+ mv $IMGNAME-sparsified.$EXT $IMGNAME.$EXT
+
+fi
+
+# set correct ownership for the VM image file
+#chown qemu:qemu $IMGNAME.$EXT
+
+echo "Process Completed. Use the 'virt start $IMGNAME' command to start the newly created VM."
+
+#==============================================================================+
+# END OF FILE
+#==============================================================================+
diff --git a/other/scripts/resizevm.sh b/other/scripts/resizevm.sh
new file mode 100755
index 0000000..aaaa3ae
--- /dev/null
+++ b/other/scripts/resizevm.sh
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+#==============================================================================+
+# File name : resizevm.sh
+# Begin : 2013-04-18
+# Last Update : 2013-04-23
+# Version : 1.0.0
+#
+# Description : Shell script used to resize Virtual Machine image.
+#
+# Website : https://github.com/fubralimited/CentOS-KVM-Image-Tools
+#
+# Author: Nicola Asuni
+#
+# (c) Copyright:
+# Fubra Limited
+# Manor Coach House
+# Church Hill
+# Aldershot
+# Hampshire
+# GU12 4RQ
+# UK
+# http://www.fubra.com
+# support@fubra.com
+#
+# License:
+# Copyright (C) 2012-2013 Fubra Limited
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# See LICENSE.TXT file for more information.
+#==============================================================================+
+
+# USAGE EXAMPLE:
+# sh resizevm.sh VM_NAME VM_SIZE
+# sh resizevm.sh centosvm 20G
+
+# NOTE: This script assume that the VM images are created using the centoskvm.sh
+# script and located at /data/images
+
+# ensure script is being run as root
+if [ `whoami` != root ]; then
+ echo "ERROR: This script must be run as root" 1>&2
+ exit 1
+fi
+
+# check for vm name
+if [ -z "$1" ]; then
+ echo "ERROR: No argument supplied. Please provide the Virtual machine name."
+ exit 1
+fi
+
+# name of the image
+VMNAME=$1
+
+# check for new size
+if [ -z "$2" ]; then
+ echo "ERROR: Missing size argument. Please provide the Virtual machine name new size."
+ exit 1
+fi
+
+echo "Resizing VM ..."
+
+# new size of the image
+VMSIZE=$2
+
+# extract VM file name
+VMFILE=$(virsh dumpxml $VMNAME | grep "<source file='" | sed "s/[\t ]*<source file='\/data\/images\///" | sed "s/'\/>//")
+
+export TMPDIR=/data/tmp/
+
+# shut the virtual machine down
+virsh shutdown $VMNAME
+
+# change directory
+cd /data/images
+
+# clone VM image
+cp -f $VMFILE $VMFILE.tmp
+
+# resize the cloned image (i.e. 20 GB)
+qemu-img resize $VMFILE.tmp $VMSIZE
+
+# resize the partitions
+virt-resize --expand /dev/vda2 --LV-expand /dev/vg_main/lv_root $VMFILE $VMFILE.tmp
+
+# make a backup of the VM for any evenience:
+mv -f $VMFILE $VMFILE.backup
+
+# sparsify image
+virt-sparsify --format qcow2 --compress $VMFILE.tmp $VMFILE
+
+# remove the resized image
+rm -f $VMFILE.tmp
+
+# set file ownership
+chown qemu:qemu $VMFILE
+
+# restart the virtual machine
+virsh start $VMNAME
+
+# if the new image works fine, then we can delete the backup image:
+#rm -rf $VMFILE.backup
+
+echo "Process Completed. Please try the new image and delete the backup file if everything is OK."
+
+#==============================================================================+
+# END OF FILE
+#==============================================================================+