1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#!/bin/sh
set -e
#set -x
. /root/oci-openrc
USE_DAILY_IMAGE=no
if [ "${1}" = "--use-daily-image" ] ; then
USE_DAILY_IMAGE=yes
fi
DEBIAN_RELEASE=$(lsb_release -c -s)
DEBIAN_RELEASE_NUM=$(lsb_release -r -s)
DEBIAN_ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH)
if [ "${USE_DAILY_IMAGE}" = "yes" ] ; then
IMAGE_NAME_NO_EXT="debian-${DEBIAN_RELEASE_NUM}-generic-${DEBIAN_ARCH}-daily"
IMAGE_NAME="${IMAGE_NAME_NO_EXT}.qcow2"
IMAGE_URL=http://cdimage.debian.org/cdimage/cloud/${DEBIAN_RELEASE}/daily/latest/${IMAGE_NAME}
else
IMAGE_NAME_NO_EXT="debian-${DEBIAN_RELEASE_NUM}-generic-${DEBIAN_ARCH}"
IMAGE_NAME="${IMAGE_NAME_NO_EXT}.qcow2"
IMAGE_URL=http://cdimage.debian.org/cdimage/cloud/${DEBIAN_RELEASE}/latest/${IMAGE_NAME}
fi
IMAGE_DOWNLOAD_TIMEOUT=30
####################
### GLANCE IMAGE ###
####################
oci_poc_prov_cloud_glance_image () {
echo "===> Provisioning of a Glance image"
if ! [ -f /root/${IMAGE_NAME} ] ; then
echo "---> Fetching image from ${IMAGE_URL}"
if [ -e /etc/oci/http_proxy_addr ] ; then
http_proxy_addr=$(cat /etc/oci/http_proxy_addr)
http_proxy=${http_proxy_addr} timeout ${IMAGE_DOWNLOAD_TIMEOUT} wget ${IMAGE_URL}
else
timeout ${IMAGE_DOWNLOAD_TIMEOUT} wget ${IMAGE_URL}
fi
else
echo "---> Image already saved in /root"
fi
# Insert the password "password" in the image.
if ! [ -e /root/password-inserted-in-image ] ; then
if [ -e /root/${IMAGE_NAME_NO_EXT}.qcow2 ] ; then
cd /root
qemu-img convert -p -W -m 8 -f qcow2 ${IMAGE_NAME_NO_EXT}.qcow2 -O raw ${IMAGE_NAME_NO_EXT}.raw
kpartx -av ${IMAGE_NAME_NO_EXT}.raw
mount /dev/mapper/loop0p1 /mnt
chroot /mnt sh -c "echo root:password | chpasswd"
umount /mnt
kpartx -d ${IMAGE_NAME_NO_EXT}.raw
qemu-img convert -c -p -W -m 8 -f raw ${IMAGE_NAME_NO_EXT}.raw -O qcow2 ${IMAGE_NAME_NO_EXT}.qcow2
fi
touch /root/password-inserted-in-image
fi
if [ -z "${IMAGE_NAME}" ] ; then
echo "Cannot find image to upload to Glance"
exit 1
fi
if echo "${IMAGE_NAME}" | grep -q qcow2 ; then
DISK_FORMAT=qcow2
else
DISK_FORMAT=raw
fi
echo "---> Fetching image list"
IMAGE_ID=$(openstack image list --property os_distro=debian --format value -c ID)
if [ -z "${IMAGE_ID}" ] ; then
echo "---> Uploading image to OpenStack"
openstack image create \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi \
--container-format bare --disk-format ${DISK_FORMAT} \
--property os_distro=debian \
--file /root/${IMAGE_NAME} \
--public \
${IMAGE_NAME}
fi
}
oci_poc_prov_cloud_glance_image
exit 0
|