/skrypty/kvm/create_TEMPLATE.sh
#!/bin/bash

virt-install \
--name NAME \
--ram 2048 \
--disk path=/kvm/images/NAME.img,size=10 \
--vcpus 1 \
--os-type linux \
--os-variant rhel7 \
--network bridge=virbr0 \
--network bridge=br0 \
--graphics none \
--autostart \
--noautoconsole \
--console pty,target_type=serial \
--location '/kvm/iso/CentOS-7-x86_64-Minimal-1511.iso' \
--extra-args 'console=ttyS0,115200n8 serial ks=http://192.168.0.200/C7/ks-NAME.cfg'


/skrypty/kvm/create_vm.sh
#!/bin/bash

# obligatory variables
# $1 = new hostname
if [ -z $1 ]; then
echo '$1 = hostname'
exit
fi

# create variables
LASTIP=`grep -P 192.168.122.[0-9][0-9]"\t" /etc/hosts | awk '{print $1}' | awk -F"." '{print $4}' | tail -1`
NEWIP=$((`grep -P 192.168.122.[0-9][0-9]"\t" /etc/hosts | awk '{print $1}' | awk -F"." '{print $4}' | tail -1` + 1))

# /etc/hosts - backup and add entry

grep $1 /etc/hosts && echo "entry exists, exit" && exit || continue
cp -p /etc/hosts /etc/hosts.`date +%y%m%d`
sed -i -e "/$LASTIP/a 192.168.122.$NEWIP\t$1 $1.example.com" /etc/hosts


# create templates: kvm script and kickstart
mkdir "$1"
sed "s/NAME/$1/g" create_TEMPLATE.sh > "$1"/create_"$1".sh
chmod u+x "$1"/create_"$1".sh
sed -e "s/NAME/$1/g" -e "s/IP/$NEWIP/g" ks-TEMPLATE.cfg > /var/www/html/C7/ks-"$1".cfg | tee "$1"/ks-"$1".cfg


## launch installation

"$1"/create_"$1".sh

### add client to nagios


# delete already existing
rm -f /etc/nagios/servers/"$1".cfg

## start creating host template - host definition
iphost=`grep $1 /etc/hosts | awk '{print $1}'`

echo "define host{" > to_monitor_"$1"
echo " use linux-server",host-pnp >> to_monitor_"$1"
echo " host_name "$1"" >> to_monitor_"$1"
echo " alias "$1"" >> to_monitor_"$1"
echo " address "$iphost"" >> to_monitor_"$1"
echo " }" >> to_monitor_"$1"

## add standard monitors: ping

echo "define service{" >> to_monitor_"$1"
echo " use generic-service,srv-pnp" >> to_monitor_"$1"
echo " host_name "$1"" >> to_monitor_"$1"
echo " service_description PING" >> to_monitor_"$1"
echo " check_command check_ping!100.0,20%!500.0,60%" >> to_monitor_"$1"
echo " }" >> to_monitor_"$1"

## add standard monitors: ressources

for resource in check_load root_disk check_mem; do
echo "define service{" >> to_monitor_"$1"
echo " use generic-service,srv-pnp" >> to_monitor_"$1"
echo " host_name "$1"" >> to_monitor_"$1"
echo " service_description "$resource"" >> to_monitor_"$1"
echo " check_command check_nrpe!"$resource"" >> to_monitor_"$1"
echo " }" >> to_monitor_"$1"
done

mv to_monitor_"$1" "$1"/to_monitor_"$1"
cat "$1"/to_monitor_"$1" > /etc/nagios/servers/"$1".cfg
#nagios -v /etc/nagios/nagios.cfg && systemctl restart nagios

systemctl restart nagios

## disable monitoring for 10 min
/usr/bin/printf "[%lu] DISABLE_HOST_CHECK;$1\n" `date +%s` > /var/spool/nagios/cmd/nagios.cmd
/usr/bin/printf "[%lu] ENABLE_HOST_NOTIFICATIONS;$1\n" `date +%s --date "now + 10 min"` > /var/spool/nagios/cmd/nagios.cmd
#[1466332337] EXTERNAL COMMAND: DISABLE_HOST_CHECK;block1



/skrypty/kvm/delete_vm.sh
#!/bin/bash

# obligatory variables
# $1 = hostname
if [ -z $1 ]; then
echo '$1 = hostname'
exit
fi


virsh destroy $1
virsh undefine $1
virsh vol-delete --pool images "$1".img

cp -p /etc/hosts /etc/hosts.`date +"%Y%m%d%H%M"`
sed -i "s/^.*$1.example.com.*//g" /etc/hosts
sed -i "s/^.*$1.*//g" /root/.ssh/known_hosts

rm -f /etc/nagios/servers/"$1".cfg
systemctl restart nagios


/skrypty/kvm/show_params.sh
#!/bin/bash
function main_menu {
case "$vm_parameter" in
"1")
echo "Current memory: "$((`virsh dominfo $vm_name | grep "Used memory" | awk '{print $3}'`/1024))M""
echo "Maximum memory: "$((`virsh dominfo $vm_name | grep "Max memory" | awk '{print $3}'`/1024))M""
;;
"2") virsh dominfo $vm_name | grep "CPU(s)" | awk '{print $2}'
;;
esac
}

virsh list --all
echo -n "choose vm: "

read vm_name
echo -n "choose parameter
1 - Show memory
2 - Show cpu
: "
read vm_parameter

main_menu


/skrypty/kvm/ks-TEMPLATE.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use text mode install
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
eula --agreed
reboot
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network --bootproto=static --ip=192.168.122.IP --netmask=255.255.255.0 --gateway=192.168.122.1 --nameserver=192.168.122.1 --device=eth0 --onboot=on --ipv6=auto
network --bootproto=dhcp --device=eth1 --onboot=on --ipv6=auto
network --hostname=NAME.example.com

# Root password
rootpw --iscrypted $6$Cifea0aHV52PfNYQ$2iJA6Y26dHMb.MKYrN7jKknoTZ8VfgJhP208rYKgA1slPO/uPnpacWsNdD0VvnELcsWOe220wKeWuaZwb0LUW.
# Do not configure the X Window System
skipx
# System timezone
timezone Europe/Warsaw --isUtc
user --name=marek --password=$6$Y4FHLhIjN06VFFs9$g5RIWcX.2gffFx6mum.g3sw/xRwXcsPTgo4.ArF0IdlMVQIYO1ePLtVY6vKFbrNu23Md6gGN/J1n4Ny4lZLt80 --iscrypted --gecos="marek"
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=vda

%packages
@core
kexec-tools

%end


%addon com_redhat_kdump --enable --reserve-mb='auto'

%end
%post --log=/tmp/post.log

#epel relase
/usr/bin/yum install -y epel-release

# salt-minion
/usr/bin/yum install -y salt-minion
sed -i "s/^#master.*/master: 192.168.122.77/" /etc/salt/minion
systemctl enable salt-minion

# nagios
#/usr/bin/yum install -y nrpe nagios-plugins-users nagios-plugins-load nagios-plugins-swap nagios-plugins-disk nagios-plugins-procs
#systemctl enable nrpe
# salt-cp test1.example.com /config/nagios/plugins/* /usr/lib64/nagios/plugins

#nfs client
/usr/bin/yum install -y nfs-utils
mkdir /skrypty
mount /skrypty
echo 'hp.example.com:/skrypty /skrypty nfs4 defaults 0 0' >> /etc/fstab
mkdir /config
echo 'hp.example.com:/config /config nfs4 defaults 0 0' >> /etc/fstab
mount /config

# nagios
/usr/bin/yum install -y nrpe nagios-plugins-users nagios-plugins-load nagios-plugins-swap nagios-plugins-disk nagios-plugins-procs
systemctl enable nrpe
# salt-cp test1.example.com /config/nagios/plugins/* /usr/lib64/nagios/plugins

cp -p /config/nagios/plugins/* /usr/lib64/nagios/plugins
echo 'allowed_hosts=192.168.122.1' > /etc/nrpe.d/NAME_nrpe.cfg
echo 'command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20' >> /etc/nrpe.d/NAME_nrpe.cfg
echo 'command[root_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p / -m' >> /etc/nrpe.d/NAME_nrpe.cfg
echo 'command[check_mem]=/usr/lib64/nagios/plugins/check_mem' >> /etc/nrpe.d/NAME_nrpe.cfg

# ldapclient
/usr/bin/yum install -y opendap-clients nss-pam-ldapd
authconfig --enableldap --enableldapauth --ldapserver="192.168.122.66" \
--ldapbasedn="dc=example,dc=com" --update

reboot
%end


/skrypty/kvm/attach_cdrom.sh
#!/bin/bash

virsh attach-disk test1 /kvm/iso/CentOS-6.7-x86_64-bin-DVD1.iso hda --type cdrom --mode readonly