Skip to content

Commit a978afe

Browse files
authored
Merge pull request #3 from vvaldez/volume_backed_images
Volume backed images
2 parents dbb3255 + 415c139 commit a978afe

File tree

5 files changed

+118
-50
lines changed

5 files changed

+118
-50
lines changed

setup-kvm-and-openstack/build-rhosp-vm.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ cmd virt-customize -a ${OSP_VM_IMAGE_PATH} \
5555
--run-command 'yum remove cloud-init* -y && \
5656
rpm -ivh http://rhos-release.virt.bos.redhat.com/repos/rhos-release/rhos-release-latest.noarch.rpm && \
5757
rhos-release 10 && \
58+
yum install -y lvm2 libguestfs-tools && \
59+
sed -i -e "s/issue_discards = .*$/issue_discards = 1/" /etc/lvm/lvm.conf && \
5860
systemctl disable NetworkManager' \
5961
--write /etc/sysconfig/network-scripts/ifcfg-eth1:'DEVICE=eth1
6062
BOOTPROTO=static
@@ -132,12 +134,16 @@ then
132134
echo "WARNING: ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME} link exists, remove first?"
133135
rm -iv ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}
134136
fi
135-
cmd rsync -avP ${OSP_VM_IMAGE_PATH} ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}.${DATETIME}
137+
138+
# Sparsify image
139+
cmd virt-sparsify ${OSP_VM_IMAGE_PATH} ${OSP_VM_IMAGE_PATH}-sparsified
140+
cmd rsync -avP ${OSP_VM_IMAGE_PATH}-sparsified ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/${OSP_VM_IMAGE_NAME}.${DATETIME}-sparsified
136141

137142
# Create symlink to new image
138143
pushd ${FILESHARE_DEST_BASE}/${OSP_VM_NAME}/
139-
ln -s ${OSP_VM_IMAGE_NAME}.${DATETIME} ${OSP_VM_IMAGE_NAME}
144+
ln -s ${OSP_VM_IMAGE_NAME}.${DATETIME}-sparsified ${OSP_VM_IMAGE_NAME}
140145
popd
141146

142147
# Remove running rhosp guest
143148
source remove-rhosp-vm.sh
149+
cmd rm -iv ${OSP_VM_IMAGE_PATH}-sparsified

setup-kvm-and-openstack/group_vars_all

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ OSP_VM_NAME=${LAB_NAME}-${OSP_NAME}
3232
OSP_VM_IMAGE_NAME=${OSP_VM_NAME}.qcow2
3333
OSP_VM_IMAGE_PATH=${IMAGE_LOCAL_DIR}/${OSP_VM_IMAGE_NAME}
3434
OSP_VM_HOSTNAME=${OSP_NAME}.${ADMIN_DOMAIN}
35-
OSP_VM_TOTAL_DISK_SIZE=100G
36-
OSP_VM_ROOT_DISK_SIZE=15G
35+
OSP_VM_TOTAL_DISK_SIZE=110G
36+
OSP_VM_ROOT_DISK_SIZE=10G
3737
OSP_BASE_IMAGE_NAME=rhel-guest-image-7.3-35.x86_64.qcow2
3838
OSP_BASE_IMAGE_URL=http://${FILESHARE_HOST}/fileshare/images/${OSP_BASE_IMAGE_NAME}
3939
OSP_BASE_IMAGE_PATH=${IMAGE_STAGING_DIR}/${OSP_BASE_IMAGE_NAME}

setup-kvm-and-openstack/openstack-scripts/answers.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ CONFIG_HORIZON_INSTALL=y
4242
CONFIG_SWIFT_INSTALL=y
4343

4444
# Specify 'y' to install OpenStack Metering (ceilometer). ['y', 'n']
45-
CONFIG_CEILOMETER_INSTALL=n
45+
CONFIG_CEILOMETER_INSTALL=y
4646

4747
# Specify 'y' to install OpenStack Telemetry Alarming (Aodh). Note
4848
# Aodh requires Ceilometer to be installed as well. ['y', 'n']

setup-kvm-and-openstack/openstack-scripts/openstack-env-config.sh

Lines changed: 106 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ prep() {
4242
fi
4343

4444
# Enable lvm on second partition
45-
cmd yum -y install lvm2
4645
cmd pvcreate /dev/sda2
4746
cmd vgcreate cinder-volumes /dev/sda2
4847
cmd vgchange -ay
@@ -58,15 +57,19 @@ packstack-install() {
5857

5958
post-install-config() {
6059
cmd echo "INFO: Starting function 'prepare-host'"
61-
# Enable discards for lvm
62-
cmd sed -i -e 's/issue_discards = .*$/issue_discards = 1/' /etc/lvm/lvm.conf
6360

61+
openstack-config --set /etc/cinder/cinder.conf lvm volume_clear none
62+
openstack-config --set /etc/cinder/cinder.conf lvm image_upload_use_cinder_backend True
63+
openstack-config --set /etc/cinder/cinder.conf lvm lvm_type thin
64+
openstack-config --set /etc/cinder/cinder.conf DEFAULT glance_api_version 2
65+
openstack-config --set /etc/cinder/cinder.conf DEFAULT allowed_direct_url_schemes cinder
66+
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http,swift,cinder
67+
openstack-config --set /etc/glance/glance-api.conf DEFAULT show_multiple_locations True
6468
openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,CoreFilter
6569
openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm
6670
openstack-config --set /etc/nova/nova.conf libvirt cpu_mode host-passthrough
6771
openstack-config --set /etc/nova/nova.conf libvirt hw_disk_discard unmap
6872
openstack-config --set /etc/nova/nova.conf libvirt use_usb_tablet false
69-
openstack-config --set /etc/cinder/cinder.conf lvm volume_clear none
7073
openstack-config --set /etc/nova/nova.conf DEFAULT block_device_allocate_retries 120
7174
openstack-config --set /etc/nova/nova.conf DEFAULT block_device_allocate_retries_interval 10
7275
if "${EXTERNAL_ONLY}" == "true"
@@ -142,33 +145,94 @@ chown ${USERNAME}:${USERNAME} /home/${USERNAME}/keystonerc_${USERNAME}
142145
}
143146

144147
create-images() {
145-
# Logging everything except the image creation
146-
cmd echo "INFO: Starting function 'create-images'"
147-
if [ "${IMAGE_IS_PUBLIC}" = true ]
148+
# image creation
149+
cmd echo "INFO: Starting function 'create-images'"
150+
source /root/keystonerc_${USERNAME}
151+
152+
if ! glance image-list | grep image-base-src
148153
then
149-
source /root/keystonerc_admin
150-
IMAGE_IS_PUBLIC_OPTION="--public"
151-
else
152-
source /root/keystonerc_${USERNAME}
153-
IMAGE_IS_PUBLIC_OPTION=
154+
cmd openstack image create \
155+
--disk-format raw \
156+
--container-format bare \
157+
--property hw_scsi_model=virtio-scsi \
158+
--property hw_disk_bus=scsi \
159+
--min-disk 10 \
160+
--file ${OPENSHIFT_IMAGE_PATH} \
161+
image-base-src
162+
fi
163+
# wait for image to become active
164+
echo -en "\nWaiting for image-base-src image to create"
165+
counter=0
166+
while :
167+
do
168+
counter=$(( $counter + 1 ))
169+
echo -n "."
170+
sleep 1
171+
if openstack image show image-base-src -f value -c status | grep -q active
172+
then
173+
break
174+
fi
175+
if [ $counter -gt $TIMEOUT ]
176+
then
177+
echo ERROR: something went wrong - check console
178+
exit 1
179+
elif [ $counter -eq $TIMEOUT_WARN ]
180+
then
181+
echo -n "WARN: this is taking longer than expected"
182+
fi
183+
done
184+
echo ""
185+
if ! glance image-list | grep ${OPENSHIFT_VM_NAME}
186+
then
187+
cmd openstack volume create \
188+
--image image-base-src \
189+
--size 10 \
190+
${OPENSHIFT_VM_NAME}
191+
cmd openstack image create \
192+
--disk-format raw \
193+
--protected \
194+
--container-format bare \
195+
--property hw_scsi_model=virtio-scsi \
196+
--property hw_disk_bus=scsi \
197+
--min-disk 10 \
198+
${OPENSHIFT_VM_NAME}
199+
echo -en "\nWaiting for ${OPENSHIFT_VM_NAME} volume to create"
200+
counter=0
201+
while :
202+
do
203+
counter=$(( $counter + 1 ))
204+
echo -n "."
205+
sleep 2
206+
if openstack volume show ${OPENSHIFT_VM_NAME} -f value -c status | grep -q available
207+
then
208+
break
209+
fi
210+
if [ $counter -gt $TIMEOUT ]
211+
then
212+
echo ERROR: something went wrong - check console
213+
exit 1
214+
elif [ $counter -eq $TIMEOUT_WARN ]
215+
then
216+
echo -n "WARN: this is taking longer than expected"
217+
fi
218+
done
219+
echo ""
220+
VOLUME_ID=$(openstack volume show ${OPENSHIFT_VM_NAME} -f value -c id)
221+
IMAGE_ID=$(openstack image show ${OPENSHIFT_VM_NAME} -f value -c id)
222+
if openstack image list | grep -qi error
223+
then
224+
echo "ERROR: Image creation failed"
225+
exit 1
226+
fi
227+
if openstack volume list | grep -qi error
228+
then
229+
echo "ERROR: Volume creation failed"
230+
exit 1
231+
fi
232+
cmd glance location-add ${IMAGE_ID} --url cinder://${VOLUME_ID}
233+
cmd virt-sparsify /dev/cinder-volumes/volume-${VOLUME_ID} --in-place
234+
cmd openstack image delete image-base-src
154235
fi
155-
if [ "${VERBOSE}" = true ]
156-
then
157-
echo "INFO: Setting IMAGE_IS_PUBLIC_OPTION to '${IMAGE_IS_PUBLIC_OPTION}'"
158-
fi
159-
if ! glance image-list | grep ${OPENSHIFT_VM_NAME}
160-
then
161-
cmd openstack image create \
162-
${IMAGE_IS_PUBLIC_OPTION} \
163-
--disk-format qcow2 \
164-
--protected \
165-
--container-format bare \
166-
--property hw_scsi_model=virtio-scsi \
167-
--property hw_disk_bus=scsi \
168-
--min-disk 10 \
169-
--file ${OPENSHIFT_IMAGE_PATH} \
170-
${OPENSHIFT_VM_NAME}
171-
fi
172236
cmd openstack image show ${OPENSHIFT_VM_NAME}
173237
cmd rm -vf ${OPENSHIFT_IMAGE_PATH}
174238
}
@@ -246,9 +310,9 @@ build-instances() {
246310
then
247311
echo ERROR: something went wrong - check console
248312
exit 1
249-
elif [ $counter -gt $TIMEOUT_WARN ]
313+
elif [ $counter -eq $TIMEOUT_WARN ]
250314
then
251-
echo WARN: this is taking longer than expected
315+
echo -n "WARN: this is taking longer than expected"
252316
fi
253317
done
254318
echo ""
@@ -279,11 +343,11 @@ verify-networking() {
279343
fi
280344
if [ $counter -gt $TIMEOUT ]
281345
then
282-
echo ERROR: something went wrong - check console
346+
echo "ERROR: something went wrong - check console"
283347
exit 1
284-
elif [ $counter -gt $TIMEOUT_WARN ]
348+
elif [ $counter -eq $TIMEOUT_WARN ]
285349
then
286-
echo WARN: this is taking longer than expected
350+
echo -n "WARN: this is taking longer than expected"
287351
fi
288352
done
289353
echo ""
@@ -309,14 +373,14 @@ cleanup() {
309373
fi
310374
if [ $counter -gt $TIMEOUT ]
311375
then
312-
echo ERROR: something went wrong - check console
376+
echo "ERROR: something went wrong - check console"
313377
exit 1
314-
elif [ $counter -gt $TIMEOUT_WARN ]
378+
elif [ $counter -eq $TIMEOUT_WARN ]
315379
then
316-
echo WARN: this is taking longer than expected
380+
echo -n "WARN: this is taking longer than expected"
317381
fi
318382
done
319-
echo ""
383+
echo ""
320384
echo -n "Waiting for openshift-base-volume to be deleted"
321385
counter=0
322386
while :
@@ -330,11 +394,11 @@ cleanup() {
330394
fi
331395
if [ $counter -gt $TIMEOUT ]
332396
then
333-
echo ERROR: something went wrong - check console
397+
echo "ERROR: something went wrong - check console"
334398
exit 1
335-
elif [ $counter -gt $TIMEOUT_WARN ]
399+
elif [ $counter -eq $TIMEOUT_WARN ]
336400
then
337-
echo WARN: this is taking longer than expected
401+
echo -n "WARN: this is taking longer than expected"
338402
fi
339403
done
340404
echo ""
@@ -349,6 +413,7 @@ post-install-config 2>&1 | tee -a ${LOGFILE}
349413
post-install-admin-tasks 2>&1 | tee -a ${LOGFILE}
350414
create-images 2>&1 | tee -a ${LOGFILE}
351415
post-install-user-tasks 2>&1 | tee -a ${LOGFILE}
416+
# Commenting out the following functions intentionally to avoid local image cache creation in /var/lib/nova/instances
352417
#build-instances 2>&1 | tee -a ${LOGFILE}
353418
#source /root/keystonerc_${USERNAME}
354419
#if nova list | grep ERROR

setup-kvm-and-openstack/openstack-scripts/scenario-all-in-one

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
echo "INFO: Loading scenario-all-in-one"
22

3-
TIMEOUT=60
3+
TIMEOUT=120
44
TIMEOUT_WARN=$(( $TIMEOUT / 2 ))
55
# Set the following to the version of RHELOSP to install, see the following array for all versions or run rhos-release -l
66
RHELOSP_VERSION=10
@@ -45,9 +45,6 @@ COMPUTE_HOSTS=${CONTROLLER_HOST}
4545
NETWORK_HOSTS=${CONTROLLER_HOST}
4646
PRIVATE_NETWORK=
4747

48-
#Images
49-
IMAGE_IS_PUBLIC=true
50-
5148
# OpenShift image
5249
OPENSHIFT_IMAGE_PATH=/tmp/L104353-openshift-base.qcow2
5350
OPENSHIFT_VM_NAME=openshift-base

0 commit comments

Comments
 (0)