diff --git a/setup-kvm-and-openstack/build-rhosp-vm.sh b/setup-kvm-and-openstack/build-rhosp-vm.sh index e73449b..b0f6478 100755 --- a/setup-kvm-and-openstack/build-rhosp-vm.sh +++ b/setup-kvm-and-openstack/build-rhosp-vm.sh @@ -55,6 +55,8 @@ cmd virt-customize -a ${OSP_VM_IMAGE_PATH} \ --run-command 'yum remove cloud-init* -y && \ rpm -ivh http://rhos-release.virt.bos.redhat.com/repos/rhos-release/rhos-release-latest.noarch.rpm && \ rhos-release 10 && \ + yum install -y lvm2 libguestfs-tools && \ + sed -i -e "s/issue_discards = .*$/issue_discards = 1/" /etc/lvm/lvm.conf && \ systemctl disable NetworkManager' \ --write /etc/sysconfig/network-scripts/ifcfg-eth1:'DEVICE=eth1 BOOTPROTO=static @@ -132,12 +134,16 @@ then echo "WARNING: ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME} link exists, remove first?" rm -iv ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME} fi -cmd rsync -avP ${OSP_VM_IMAGE_PATH} ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}.${DATETIME} + +# Sparsify image +cmd virt-sparsify ${OSP_VM_IMAGE_PATH} ${OSP_VM_IMAGE_PATH}-sparsified +cmd rsync -avP ${OSP_VM_IMAGE_PATH}-sparsified ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}.${DATETIME}-sparsified # Create symlink to new image pushd ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/ -ln -s ${OSP_VM_IMAGE_NAME}.${DATETIME} ${OSP_VM_IMAGE_NAME} +ln -s ${OSP_VM_IMAGE_NAME}.${DATETIME}-sparsified ${OSP_VM_IMAGE_NAME} popd # Remove running rhosp guest source remove-rhosp-vm.sh +cmd rm -iv ${OSP_VM_IMAGE_PATH}-sparsified diff --git a/setup-kvm-and-openstack/group_vars_all b/setup-kvm-and-openstack/group_vars_all index da1faaf..0e25e98 100755 --- a/setup-kvm-and-openstack/group_vars_all +++ b/setup-kvm-and-openstack/group_vars_all @@ -32,8 +32,8 @@ OSP_VM_NAME=${LAB_NAME}-${OSP_NAME} OSP_VM_IMAGE_NAME=${OSP_VM_NAME}.qcow2 OSP_VM_IMAGE_PATH=${IMAGE_LOCAL_DIR}/${OSP_VM_IMAGE_NAME} OSP_VM_HOSTNAME=${OSP_NAME}.${ADMIN_DOMAIN} -OSP_VM_TOTAL_DISK_SIZE=100G -OSP_VM_ROOT_DISK_SIZE=15G +OSP_VM_TOTAL_DISK_SIZE=110G +OSP_VM_ROOT_DISK_SIZE=10G OSP_BASE_IMAGE_NAME=rhel-guest-image-7.3-35.x86_64.qcow2 OSP_BASE_IMAGE_URL=http://${FILESHARE_HOST}/fileshare/images/${OSP_BASE_IMAGE_NAME} OSP_BASE_IMAGE_PATH=${IMAGE_STAGING_DIR}/${OSP_BASE_IMAGE_NAME} diff --git a/setup-kvm-and-openstack/openstack-scripts/answers.txt b/setup-kvm-and-openstack/openstack-scripts/answers.txt index 1c8006d..fbdcd77 100644 --- a/setup-kvm-and-openstack/openstack-scripts/answers.txt +++ b/setup-kvm-and-openstack/openstack-scripts/answers.txt @@ -42,7 +42,7 @@ CONFIG_HORIZON_INSTALL=y CONFIG_SWIFT_INSTALL=y # Specify 'y' to install OpenStack Metering (ceilometer). ['y', 'n'] -CONFIG_CEILOMETER_INSTALL=n +CONFIG_CEILOMETER_INSTALL=y # Specify 'y' to install OpenStack Telemetry Alarming (Aodh). Note # Aodh requires Ceilometer to be installed as well. ['y', 'n'] diff --git a/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh index 063e320..661ed28 100755 --- a/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh +++ b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh @@ -42,7 +42,6 @@ prep() { fi # Enable lvm on second partition - cmd yum -y install lvm2 cmd pvcreate /dev/sda2 cmd vgcreate cinder-volumes /dev/sda2 cmd vgchange -ay @@ -58,15 +57,19 @@ packstack-install() { post-install-config() { cmd echo "INFO: Starting function 'prepare-host'" - # Enable discards for lvm - cmd sed -i -e 's/issue_discards = .*$/issue_discards = 1/' /etc/lvm/lvm.conf + openstack-config --set /etc/cinder/cinder.conf lvm volume_clear none + openstack-config --set /etc/cinder/cinder.conf lvm image_upload_use_cinder_backend True + openstack-config --set /etc/cinder/cinder.conf lvm lvm_type thin + openstack-config --set /etc/cinder/cinder.conf DEFAULT glance_api_version 2 + openstack-config --set /etc/cinder/cinder.conf DEFAULT allowed_direct_url_schemes cinder + openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http,swift,cinder + openstack-config --set /etc/glance/glance-api.conf DEFAULT show_multiple_locations True openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,CoreFilter openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm openstack-config --set /etc/nova/nova.conf libvirt cpu_mode host-passthrough openstack-config --set /etc/nova/nova.conf libvirt hw_disk_discard unmap openstack-config --set /etc/nova/nova.conf libvirt use_usb_tablet false - openstack-config --set /etc/cinder/cinder.conf lvm volume_clear none openstack-config --set /etc/nova/nova.conf DEFAULT block_device_allocate_retries 120 openstack-config --set /etc/nova/nova.conf DEFAULT block_device_allocate_retries_interval 10 if "${EXTERNAL_ONLY}" == "true" @@ -142,33 +145,94 @@ chown ${USERNAME}:${USERNAME} /home/${USERNAME}/keystonerc_${USERNAME} } create-images() { - # Logging everything except the image creation - cmd echo "INFO: Starting function 'create-images'" - if [ "${IMAGE_IS_PUBLIC}" = true ] + # image creation + cmd echo "INFO: Starting function 'create-images'" + source /root/keystonerc_${USERNAME} + + if ! glance image-list | grep image-base-src then - source /root/keystonerc_admin - IMAGE_IS_PUBLIC_OPTION="--public" - else - source /root/keystonerc_${USERNAME} - IMAGE_IS_PUBLIC_OPTION= + cmd openstack image create \ + --disk-format raw \ + --container-format bare \ + --property hw_scsi_model=virtio-scsi \ + --property hw_disk_bus=scsi \ + --min-disk 10 \ + --file ${OPENSHIFT_IMAGE_PATH} \ + image-base-src + fi + # wait for image to become active + echo -en "\nWaiting for image-base-src image to create" + counter=0 + while : + do + counter=$(( $counter + 1 )) + echo -n "." + sleep 1 + if openstack image show image-base-src -f value -c status | grep -q active + then + break + fi + if [ $counter -gt $TIMEOUT ] + then + echo ERROR: something went wrong - check console + exit 1 + elif [ $counter -eq $TIMEOUT_WARN ] + then + echo -n "WARN: this is taking longer than expected" + fi + done + echo "" + if ! glance image-list | grep ${OPENSHIFT_VM_NAME} + then + cmd openstack volume create \ + --image image-base-src \ + --size 10 \ + ${OPENSHIFT_VM_NAME} + cmd openstack image create \ + --disk-format raw \ + --protected \ + --container-format bare \ + --property hw_scsi_model=virtio-scsi \ + --property hw_disk_bus=scsi \ + --min-disk 10 \ + ${OPENSHIFT_VM_NAME} + echo -en "\nWaiting for ${OPENSHIFT_VM_NAME} volume to create" + counter=0 + while : + do + counter=$(( $counter + 1 )) + echo -n "." + sleep 2 + if openstack volume show ${OPENSHIFT_VM_NAME} -f value -c status | grep -q available + then + break + fi + if [ $counter -gt $TIMEOUT ] + then + echo ERROR: something went wrong - check console + exit 1 + elif [ $counter -eq $TIMEOUT_WARN ] + then + echo -n "WARN: this is taking longer than expected" + fi + done + echo "" + VOLUME_ID=$(openstack volume show ${OPENSHIFT_VM_NAME} -f value -c id) + IMAGE_ID=$(openstack image show ${OPENSHIFT_VM_NAME} -f value -c id) + if openstack image list | grep -qi error + then + echo "ERROR: Image creation failed" + exit 1 + fi + if openstack volume list | grep -qi error + then + echo "ERROR: Volume creation failed" + exit 1 + fi + cmd glance location-add ${IMAGE_ID} --url cinder://${VOLUME_ID} + cmd virt-sparsify /dev/cinder-volumes/volume-${VOLUME_ID} --in-place + cmd openstack image delete image-base-src fi - if [ "${VERBOSE}" = true ] - then - echo "INFO: Setting IMAGE_IS_PUBLIC_OPTION to '${IMAGE_IS_PUBLIC_OPTION}'" - fi - if ! glance image-list | grep ${OPENSHIFT_VM_NAME} - then - cmd openstack image create \ - ${IMAGE_IS_PUBLIC_OPTION} \ - --disk-format qcow2 \ - --protected \ - --container-format bare \ - --property hw_scsi_model=virtio-scsi \ - --property hw_disk_bus=scsi \ - --min-disk 10 \ - --file ${OPENSHIFT_IMAGE_PATH} \ - ${OPENSHIFT_VM_NAME} - fi cmd openstack image show ${OPENSHIFT_VM_NAME} cmd rm -vf ${OPENSHIFT_IMAGE_PATH} } @@ -246,9 +310,9 @@ build-instances() { then echo ERROR: something went wrong - check console exit 1 - elif [ $counter -gt $TIMEOUT_WARN ] + elif [ $counter -eq $TIMEOUT_WARN ] then - echo WARN: this is taking longer than expected + echo -n "WARN: this is taking longer than expected" fi done echo "" @@ -279,11 +343,11 @@ verify-networking() { fi if [ $counter -gt $TIMEOUT ] then - echo ERROR: something went wrong - check console + echo "ERROR: something went wrong - check console" exit 1 - elif [ $counter -gt $TIMEOUT_WARN ] + elif [ $counter -eq $TIMEOUT_WARN ] then - echo WARN: this is taking longer than expected + echo -n "WARN: this is taking longer than expected" fi done echo "" @@ -309,14 +373,14 @@ cleanup() { fi if [ $counter -gt $TIMEOUT ] then - echo ERROR: something went wrong - check console + echo "ERROR: something went wrong - check console" exit 1 - elif [ $counter -gt $TIMEOUT_WARN ] + elif [ $counter -eq $TIMEOUT_WARN ] then - echo WARN: this is taking longer than expected + echo -n "WARN: this is taking longer than expected" fi done - echo "" + echo "" echo -n "Waiting for openshift-base-volume to be deleted" counter=0 while : @@ -330,11 +394,11 @@ cleanup() { fi if [ $counter -gt $TIMEOUT ] then - echo ERROR: something went wrong - check console + echo "ERROR: something went wrong - check console" exit 1 - elif [ $counter -gt $TIMEOUT_WARN ] + elif [ $counter -eq $TIMEOUT_WARN ] then - echo WARN: this is taking longer than expected + echo -n "WARN: this is taking longer than expected" fi done echo "" @@ -349,6 +413,7 @@ post-install-config 2>&1 | tee -a ${LOGFILE} post-install-admin-tasks 2>&1 | tee -a ${LOGFILE} create-images 2>&1 | tee -a ${LOGFILE} post-install-user-tasks 2>&1 | tee -a ${LOGFILE} +# Commenting out the following functions intentionally to avoid local image cache creation in /var/lib/nova/instances #build-instances 2>&1 | tee -a ${LOGFILE} #source /root/keystonerc_${USERNAME} #if nova list | grep ERROR diff --git a/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one b/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one index 550f9f8..f1f7314 100644 --- a/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one +++ b/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one @@ -1,6 +1,6 @@ echo "INFO: Loading scenario-all-in-one" -TIMEOUT=60 +TIMEOUT=120 TIMEOUT_WARN=$(( $TIMEOUT / 2 )) # Set the following to the version of RHELOSP to install, see the following array for all versions or run rhos-release -l RHELOSP_VERSION=10 @@ -45,9 +45,6 @@ COMPUTE_HOSTS=${CONTROLLER_HOST} NETWORK_HOSTS=${CONTROLLER_HOST} PRIVATE_NETWORK= -#Images -IMAGE_IS_PUBLIC=true - # OpenShift image OPENSHIFT_IMAGE_PATH=/tmp/L104353-openshift-base.qcow2 OPENSHIFT_VM_NAME=openshift-base