From 60e3a81678bc3fde703b056098f9ab118ed6acc9 Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Sat, 29 Apr 2017 04:59:01 -0400 Subject: [PATCH 1/4] updates for volume_backed_images --- .../openstack-scripts/openstack-env-config.sh | 63 +++++++++++-------- .../openstack-scripts/scenario-all-in-one | 3 - 2 files changed, 38 insertions(+), 28 deletions(-) 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..c8e80c3 100755 --- a/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh +++ b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh @@ -61,12 +61,18 @@ post-install-config() { # 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" @@ -143,32 +149,39 @@ 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 ] + cmd echo "INFO: Starting function 'create-images'" + + 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 \ + --protected \ + --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 + cmd openstack image show image-base-src + 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} + VOLUME_ID=$(openstack volume show ${OPENSHIFT_VM_NAME} -f value -c id) + IMAGE_ID=$(openstack image show ${OPENSHIFT_VM_NAME} -f value -c id) + cmd glance location-add ${IMAGE_ID} --url cinder://${VOLUME_ID} 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} } 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..b649109 100644 --- a/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one +++ b/setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one @@ -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 From 34e243060db6b56d08dd203251277d19c2c55ead Mon Sep 17 00:00:00 2001 From: Jason DeTiberus Date: Sat, 29 Apr 2017 16:44:31 -0400 Subject: [PATCH 2/4] reduce rhosp image size - configure lvm and issue_discards during virt-customize in build instead of during the openstack install - cleanup the src image for the volume-backed image --- setup-kvm-and-openstack/build-rhosp-vm.sh | 2 ++ .../openstack-scripts/openstack-env-config.sh | 7 ++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/setup-kvm-and-openstack/build-rhosp-vm.sh b/setup-kvm-and-openstack/build-rhosp-vm.sh index e73449b..513dc7d 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 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 c8e80c3..ee73155 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,8 +57,6 @@ 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 @@ -155,7 +152,6 @@ create-images() { then cmd openstack image create \ --disk-format raw \ - --protected \ --container-format bare \ --property hw_scsi_model=virtio-scsi \ --property hw_disk_bus=scsi \ @@ -163,7 +159,6 @@ create-images() { --file ${OPENSHIFT_IMAGE_PATH} \ image-base-src fi - cmd openstack image show image-base-src if ! glance image-list | grep ${OPENSHIFT_VM_NAME} then cmd openstack volume create \ @@ -181,6 +176,8 @@ create-images() { VOLUME_ID=$(openstack volume show ${OPENSHIFT_VM_NAME} -f value -c id) IMAGE_ID=$(openstack image show ${OPENSHIFT_VM_NAME} -f value -c id) 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 cmd openstack image show ${OPENSHIFT_VM_NAME} cmd rm -vf ${OPENSHIFT_IMAGE_PATH} From 57fff13533928abfc33a02ad595f41ce0e7e85a2 Mon Sep 17 00:00:00 2001 From: Vinny Valdez Date: Sat, 29 Apr 2017 22:01:29 -0500 Subject: [PATCH 3/4] Tweak build and rhosp scripts to support vol backed images --- setup-kvm-and-openstack/build-rhosp-vm.sh | 7 +- setup-kvm-and-openstack/group_vars_all | 4 +- .../openstack-scripts/answers.txt | 2 +- .../openstack-scripts/openstack-env-config.sh | 81 ++++++++++++++++--- .../openstack-scripts/scenario-all-in-one | 2 +- 5 files changed, 77 insertions(+), 19 deletions(-) diff --git a/setup-kvm-and-openstack/build-rhosp-vm.sh b/setup-kvm-and-openstack/build-rhosp-vm.sh index 513dc7d..3159c41 100755 --- a/setup-kvm-and-openstack/build-rhosp-vm.sh +++ b/setup-kvm-and-openstack/build-rhosp-vm.sh @@ -134,11 +134,14 @@ 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} ${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 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 ee73155..c10a657 100755 --- a/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh +++ b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh @@ -145,8 +145,9 @@ chown ${USERNAME}:${USERNAME} /home/${USERNAME}/keystonerc_${USERNAME} } create-images() { - # Logging everything except the image creation + # image creation cmd echo "INFO: Starting function 'create-images'" + source /root/keystonerc_${USERNAME} if ! glance image-list | grep image-base-src then @@ -159,6 +160,28 @@ create-images() { --file ${OPENSHIFT_IMAGE_PATH} \ image-base-src fi + # wait for image to become active + echo -en "\nWaiting for 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 \ @@ -173,8 +196,39 @@ create-images() { --property hw_disk_bus=scsi \ --min-disk 10 \ ${OPENSHIFT_VM_NAME} + echo -en "\nWaiting for volume to create" + counter=0 + while : + do + counter=$(( $counter + 1 )) + echo -n "." + sleep 1 + 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 @@ -256,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 "" @@ -289,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 "" @@ -319,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 : @@ -340,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 "" @@ -359,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 b649109..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 From 415c13911dae8571ac1de2347e61a6c1cc49e3fa Mon Sep 17 00:00:00 2001 From: Vinny Valdez Date: Sun, 30 Apr 2017 00:00:44 -0500 Subject: [PATCH 4/4] Fix incorrect filename for final copy --- setup-kvm-and-openstack/build-rhosp-vm.sh | 3 ++- .../openstack-scripts/openstack-env-config.sh | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/setup-kvm-and-openstack/build-rhosp-vm.sh b/setup-kvm-and-openstack/build-rhosp-vm.sh index 3159c41..b0f6478 100755 --- a/setup-kvm-and-openstack/build-rhosp-vm.sh +++ b/setup-kvm-and-openstack/build-rhosp-vm.sh @@ -137,7 +137,7 @@ fi # Sparsify image cmd virt-sparsify ${OSP_VM_IMAGE_PATH} ${OSP_VM_IMAGE_PATH}-sparsified -cmd rsync -avP ${OSP_VM_IMAGE_PATH} ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}.${DATETIME}-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}/ @@ -146,3 +146,4 @@ 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/openstack-scripts/openstack-env-config.sh b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh index c10a657..661ed28 100755 --- a/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh +++ b/setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh @@ -161,7 +161,7 @@ create-images() { image-base-src fi # wait for image to become active - echo -en "\nWaiting for image to create" + echo -en "\nWaiting for image-base-src image to create" counter=0 while : do @@ -196,13 +196,13 @@ create-images() { --property hw_disk_bus=scsi \ --min-disk 10 \ ${OPENSHIFT_VM_NAME} - echo -en "\nWaiting for volume to create" + echo -en "\nWaiting for ${OPENSHIFT_VM_NAME} volume to create" counter=0 while : do counter=$(( $counter + 1 )) echo -n "." - sleep 1 + sleep 2 if openstack volume show ${OPENSHIFT_VM_NAME} -f value -c status | grep -q available then break