liyujie
2025-08-29 87c7c0d90966d729ca3d39cbfca77a39a43960eb
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
#!/bin/bash
#
# Script for operators to create formated images.
#   first arg is the size of a disk in GB.
 
set -x
set -o errexit
 
if [ "$#" -ne 1 ]; then
  echo "The argument should be the size of a disk in GB"
  exit 2
fi
 
PROJECT=android-treehugger
ZONE=us-central1-f
DISK_NAME="extradisk-instance-${1}gb"
IMAGE_NAME="extradisk-image-${1}gb"
DEV_FILE="/dev/sdc"
 
gcloud compute disks create "${DISK_NAME}" --zone=${ZONE} --project=${PROJECT} --size="${1}GB"
gcloud compute instances attach-disk instance-disk-creation --disk "${DISK_NAME}" --zone=${ZONE} --project=${PROJECT}
 
gcloud compute ssh instance-disk-creation --zone=${ZONE} --project=${PROJECT} --command "sudo mkfs.ext4 -F ${DEV_FILE}"
gcloud compute ssh instance-disk-creation --zone=${ZONE} --project=${PROJECT} --command "sudo mount -o discard,defaults ${DEV_FILE} /mnt"
gcloud compute ssh instance-disk-creation --zone=${ZONE} --project=${PROJECT} --command "ls /mnt"
gcloud compute ssh instance-disk-creation --zone=${ZONE} --project=${PROJECT} --command "sudo umount /mnt"
 
gcloud compute instances detach-disk instance-disk-creation --disk "${DISK_NAME}" --zone=${ZONE} --project=${PROJECT}
gcloud compute images create "${IMAGE_NAME}" --source-disk-zone=${ZONE} --source-disk "${DISK_NAME}" --project=${PROJECT}
gcloud compute disks delete "${DISK_NAME}" --zone=${ZONE} --project=${PROJECT}
echo "Done image ${IMAGE_NAME} is ready."