Skip to content

Instantly share code, notes, and snippets.

@youyo
Created July 7, 2015 02:57
Show Gist options
  • Select an option

  • Save youyo/2fd1d74ff939e634be29 to your computer and use it in GitHub Desktop.

Select an option

Save youyo/2fd1d74ff939e634be29 to your computer and use it in GitHub Desktop.
#!/bin/bash -u
if [ $# -ne 11 ]; then
echo -e "Usage:\t${0} HOSTNAME PASSWORD VCPU MEMORY SWAP DISK IPADDRESS NETMASK GATEWAY OS-TYPE[centos6,centos7] NIC[1,2]"
exit 99
fi
HOSTNAME=${1?need hostname}
PASSWORD=${2?need password}
VCPU=${3?need vcpu}
MEMORY=${4?need memory}
SWAP=${5?need swap}
DISK=${6?need disk}
IPADDRESS=${7?need ipaddress}
NETMASK=${8?need netmask}
GATEWAY=${9?need gateway}
OSTYPE=${10?need gateway}
NIC=${11?need gateway}
NAMESERVER='8.8.8.8,8.8.4.4'
IMAGE_ROOT='/var/lib/libvirt/images'
LOCATION_CENTOS6="${IMAGE_ROOT}/CentOS-6.6-x86_64-bin-DVD1.iso"
LOCATION_CENTOS7="${IMAGE_ROOT}/CentOS-7-x86_64-DVD-1503-01.iso"
KS_URL="http://kickstart.youyo.info/kickstart/${OSTYPE}/${HOSTNAME}/${IPADDRESS}/${NETMASK}/${GATEWAY}/${PASSWORD}/${SWAP}/${NIC}/${NAMESERVER}"
function transform_osvariant(){ # ostype
OSVARIANT=${1}
case ${OSVARIANT} in
centos6)
echo rhel6
;;
centos7)
echo rhel7
;;
*)
echo "undefined ostype."
exit 99
;;
esac
}
function commit_location(){
LOCATION=${1}
case ${LOCATION} in
centos6)
echo ${LOCATION_CENTOS6}
;;
centos7)
echo ${LOCATION_CENTOS7}
;;
*)
echo "undefined location."
exit 99
;;
esac
}
function instance_install(){ # $1=>ostype,$2=>nic
OSVARIANT=`transform_osvariant ${1}`
LOCATION=`commit_location ${1}`
case ${2} in
1)
virt-install \
--connect qemu:///system --name ${HOSTNAME} --hvm --virt-type kvm \
--ram ${MEMORY} --vcpus ${VCPU} --arch x86_64 --os-type linux --os-variant ${OSVARIANT} \
--disk path=${IMAGE_ROOT}/${HOSTNAME}.qcow2.img,size=${DISK},format=qcow2 \
--network bridge=br0 \
--graphics vnc,listen=127.0.0.1,keymap=ja --serial pty --console pty --noautoconsole --wait -1 \
--location=${LOCATION} --noreboot --autostart \
--extra-args "ks=${KS_URL} console=tty0 console=ttyS0,115200n8 edd=off keymap=ja ip=${IPADDRESS} netmask=${NETMASK} gateway=${GATEWAY} dns=8.8.8.8" #--debug
;;
2)
virt-install \
--connect qemu:///system --name ${HOSTNAME} --hvm --virt-type kvm \
--ram ${MEMORY} --vcpus ${VCPU} --arch x86_64 --os-type linux --os-variant ${OSVARIANT} \
--disk path=${IMAGE_ROOT}/${HOSTNAME}.qcow2.img,size=${DISK},format=qcow2 \
--network bridge=br0 --network bridge=br1 \
--graphics vnc,listen=127.0.0.1,keymap=ja --serial pty --console pty --noautoconsole --wait -1 \
--location=${LOCATION} --noreboot --autostart \
--extra-args "ks=${KS_URL} console=tty0 console=ttyS0,115200n8 edd=off keymap=ja ip=${IPADDRESS} netmask=${NETMASK} gateway=${GATEWAY} dns=8.8.8.8 ksdevice=eth0" #--debug
;;
*)
echo "undefined nic"
exit 99
;;
esac
}
# run
instance_install ${OSTYPE} ${NIC}
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment