Browse Source

Added ability to resize disk.

- set RESIZE_DISK to true and DISK_SIZE to your desired size
pull/1/head
Giovanni Torres 9 years ago
parent
commit
76ec4a3ed2
  1. 69
      virt-install-centos

69
virt-install-centos

@ -12,9 +12,15 @@ if [ "$?" -eq 0 ]; then
echo -n "[WARNING] $1 already exists. "
read -p "Do you want to overwrite $1 (y/[N])? " -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo ""
virsh destroy $1 > /dev/null
virsh undefine $1 > /dev/null
echo "$(date -R) Destroying the $1 domain..."
# Remove domain with the same name
virsh destroy $1 >> $1.log 2>&1
virsh undefine $1 >> $1.log 2>&1
echo "$(date -R) Destroying the $1 storage pool..."
# Remove the associated pool
virsh pool-destroy $1 >> $1.log 2>&1
virsh pool-undefine $1 >> $1.log 2>&1
else
echo -e "\nNot overwriting $1. Exiting..."
exit 1
@ -28,11 +34,15 @@ DIR=~/virt/images
IMAGE=$DIR/CentOS-7-x86_64-GenericCloud.qcow2
# Amount of RAM in MB
MEM=768
MEM=1024
# Number of virtual CPUs
CPUS=1
# Disk Size
RESIZE_DISK=false
DISK_SIZE=20G
# Cloud init files
USER_DATA=user-data
META_DATA=meta-data
@ -51,12 +61,6 @@ pushd $DIR/$1 > /dev/null
# Create log file
touch $1.log
echo "$(date -R) Destroying the $1 domain (if it exists)..."
# Remove domain with the same name
virsh destroy $1 >> $1.log 2>&1
virsh undefine $1 >> $1.log 2>&1
# cloud-init config: set hostname, remove cloud-init package,
# and add ssh-key
cat > $USER_DATA << _EOF_
@ -67,29 +71,34 @@ preserve_hostname: False
hostname: $1
fqdn: $1.example.local
# Remove cloud-init when finished with it
runcmd:
- [ yum, -y, remove, cloud-init ]
# Configure where output will go
output:
all: ">> /var/log/cloud-init.log"
# configure interaction with ssh server
ssh_svcname: ssh
ssh_deletekeys: True
ssh_genkeytypes: ['rsa', 'ecdsa']
ssh_genkeytypes: ['ed25519', 'rsa']
# Install my public ssh key to the first user-defined user configured
# in cloud.cfg in the template (which is centos for CentOS cloud images)
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBil2QzORhDcnKiVVNpO5daOSYVp8nshcIc7aTEkdlqCRir2Oni8BEStK7x7bvh0jrp9KptlHPeos87fQs//VXEb1FEprL2c6fPWmVdtjmYw3yzSkaFKMksL7FdUoEiwF6t8pQAg2mU0Qj9emSHBKg5ttdGqNoSvXc92k7iOzgauda7jdNak+Dx9dPhR3FJwHMcZSlQHO4cweZcK63bZitxlFkJ/FJdry/TBirDhRcXslOJ3ECU2xiyRXJVPs3VNLjMdOTTAoMmZj+GraUBbQ9VIqe683xe02sM83th5hj2C4gW3qXUoFkNLfKAMRxXLRMEwI3ABFB/AAUhACxyTJp giovanni@throwaway
# Remove cloud-init when finished with it
#runcmd:
# - [ yum, -y, remove, cloud-init ]
_EOF_
echo "instance-id: $1; local-hostname: $1" > $META_DATA
echo "$(date -R) Copying template image..."
echo "$(date -R) Copying cloud image..."
cp $IMAGE $DISK
if $RESIZE_DISK
then
echo "$(date -R) Resizing the disk to $DISK_SIZE..."
qemu-img create -f qcow2 -o preallocation=metadata $DISK.new $DISK_SIZE >> $1.log 2>&1
virt-resize --quiet --expand /dev/sda1 $DISK $DISK.new >> $1.log 2>&1
mv $DISK.new $DISK
fi
# Create CD-ROM ISO with cloud-init config
echo "$(date -R) Generating ISO for cloud-init..."
@ -97,14 +106,23 @@ _EOF_
echo "$(date -R) Installing the domain and adjusting the configuration..."
echo "[INFO] Installing with the following parameters:"
echo "virt-install --import --name $1 --ram $MEM --vcpus $CPUS --disk
$DISK,format=qcow2,bus=virtio --disk $CI_ISO,device=cdrom --network
bridge=virbr0,model=virtio --os-type=linux --os-variant=rhel7 --noautoconsole"
echo " virt-install --import --name $1 --ram $MEM --vcpus $CPUS --disk \
$DISK,format=qcow2,bus=virtio --disk $CI_ISO,device=cdrom --network \
bridge=virbr0,model=virtio --os-type=linux --os-variant=rhel7 --noautoconsole"
virt-install --import --name $1 --ram $MEM --vcpus $CPUS --disk \
$DISK,format=qcow2,bus=virtio --disk $CI_ISO,device=cdrom --network \
bridge=virbr0,model=virtio --os-type=linux --os-variant=rhel7 --noautoconsole
virsh dominfo $1 >> $1.log 2>&1
# Eject cdrom
echo "$(date -R) Cleaning up cloud-init..."
virsh change-media $1 hda --eject --config >> $1.log
# Remove the unnecessary cloud init files
rm $USER_DATA $META_DATA $CI_ISO
MAC=$(virsh dumpxml $1 | awk -F\' '/mac address/ {print $2}')
while true
do
@ -118,13 +136,6 @@ _EOF_
fi
done
# Eject cdrom
echo "$(date -R) Cleaning up cloud-init..."
virsh change-media $1 hda --eject --config >> $1.log
# Remove the unnecessary cloud init files
rm $USER_DATA $CI_ISO
echo "$(date -R) DONE. SSH to $1 using $IP with username 'centos'."
popd > /dev/null
popd > /dev/null

Loading…
Cancel
Save