Skip to content

Instantly share code, notes, and snippets.

@keenan-v1
Last active May 2, 2020 16:56
Show Gist options
  • Save keenan-v1/8c1a57f7e1a9a3761981867e7c39df7b to your computer and use it in GitHub Desktop.
Save keenan-v1/8c1a57f7e1a9a3761981867e7c39df7b to your computer and use it in GitHub Desktop.
EBS provisioning script
#!/usr/bin/env bash
DEFAULT_FILESYSTEM='ext4'
for DEVICE in $(lsblk -lnd -o NAME | grep -v nvme0); do
VOLUME_ID=$(ebsnvme-id /dev/$DEVICE -v | cut -d' ' -f3)
MOUNT_POINT=$(aws ec2 describe-volumes --volume-id $VOLUME_ID | jq -r '.Volumes | .[].Tags | .[] | select(.Key == "MountPoint") | .Value')
echo "Device: ${DEVICE} - ${MOUNT_POINT}"
# Wait for attachment
aws ec2 wait volume-in-use --volume-ids $VOLUME_ID --filters Name=attachment.status,Values=attached
if [[ $(file -s /dev/$DEVICE | cut -d':' -f2) == " data" ]]; then
echo "Creating ext4 filesystem on /dev/$DEVICE."
mkfs -t $DEFAULT_FILESYSTEM /dev/$DEVICE
fi
UUID=$(lsblk -o UUID -lnd /dev/$DEVICE)
echo "Detected UUID for $DEVICE: $UUID"
mkdir -p $MOUNT_POINT
if ! grep $UUID /etc/fstab > /dev/null; then
echo "$UUID not found in /etc/fstab - adding."
echo -e "UUID=${UUID}\t${MOUNT_POINT}\t${DEFAULT_FILESYSTEM}\tdefaults,noatime\t1\t1" >> /etc/fstab
fi
if ! grep $DEVICE /proc/mounts > /dev/null; then
echo "Mounting $MOUNT_POINT."
mount $MOUNT_POINT
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment