-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy path040-import-image-to-vpc.sh
executable file
·51 lines (43 loc) · 1.71 KB
/
040-import-image-to-vpc.sh
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
#!/bin/bash
set -e
set -o pipefail
image_delete() {
image_name=$1
vpc_image_id=$(ibmcloud is images --output json | jq -r '.[]|select(.name=="'$image_name'")|.id')
[ x = x$vpc_image_id ] && return 0; # no image return
# delete and wait
ibmcloud is image-delete $vpc_image_id -f
while ibmcloud is image $vpc_image_id >/dev/null 2>&1
do
echo -n "."
sleep 10
done
echo ""
}
# import COS image to VPC
echo "Importing image from COS..."
my_dir=$(dirname "$0")
CLASSIC_ID=$(cd $my_dir/create-classic && terraform output -raw CLASSIC_ID)
if [ x$VPC_IMAGE_NAME = x ]; then
VPC_IMAGE_NAME=$(echo $PREFIX-$CLASSIC_ID-image | tr '[:upper:]' '[:lower:]')
fi
echo "Downloading vhd from COS before conversion to qcow2... this can take a while..."
ibmcloud cos download --bucket $COS_BUCKET_NAME --key $PREFIX-$CLASSIC_ID-image-0.vhd ./$PREFIX-$CLASSIC_ID-image-0.vhd
echo "Converting vhd to qcow2..."
qemu-img convert -O qcow2 ./$PREFIX-$CLASSIC_ID-image-0.vhd ./$PREFIX-$CLASSIC_ID-image-0.qcow2
echo "Uploading qcow2 to COS... this can take a while..."
ibmcloud cos upload --bucket $COS_BUCKET_NAME --key $PREFIX-$CLASSIC_ID-image-0.qcow2 --file ./$PREFIX-$CLASSIC_ID-image-0.qcow2
image_delete $VPC_IMAGE_NAME
VPC_IMAGE_JSON=$(ibmcloud is image-create $VPC_IMAGE_NAME \
--file "cos://$COS_REGION/$COS_BUCKET_NAME/$PREFIX-$CLASSIC_ID-image-0.qcow2" \
--os-name centos-stream-9-amd64 \
--resource-group-name $RESOURCE_GROUP_NAME --output json)
VPC_IMAGE_ID=$(echo $VPC_IMAGE_JSON | jq -r .id)
# wait for image to be status=available
until ibmcloud is image $VPC_IMAGE_ID --output json | jq -c -e 'select(.status=="available")' >/dev/null
do
echo -n "."
sleep 10
done
echo ""
echo "Image imported into VPC"