File: //etc/udev/rules.d/99-digitalocean-automount.rules
# Only try to automount DO block volumes.
SUBSYSTEM!="block", GOTO="do_automount_end"
ENV{ID_VENDOR}!="DO", GOTO="do_automount_end"
ENV{ID_MODEL}!="Volume", GOTO="do_automount_end"
# Only automount on the "change" action.
ACTION!="change", GOTO="do_automount_end"
# Only try to automount filesystems we know about.
ENV{ID_FS_TYPE}!="ext4|xfs", GOTO="do_automount_end"
# Create a temporary mountpoint and temporary location for the first-mount script.
IMPORT{program}="/bin/sh -c 'echo TMP_MOUNT_DIR=$(mktemp -d -p /mnt .do-first-mount-XXXXXXXXX)'"
# Handle temporary mountpoint creation failure.
ENV{TMP_MOUNT_DIR}=="", GOTO="do_automount_end"
IMPORT{program}="/bin/sh -c 'echo TMP_SCRIPT=$(mktemp -t .do-first-mount-XXXXXXXXX.sh)'"
# Handle temporary script location creation failure.
ENV{TMP_SCRIPT}=="", PROGRAM="/bin/sh -c '/bin/rmdir %E{TMP_MOUNT_DIR} || exit 0'", GOTO="do_automount_end"
RUN{program}+="/var/lib/cloud/scripts/per-instance/systemd_automount.sh %k %E{TMP_MOUNT_DIR} %E{TMP_SCRIPT} '%E{ID_SERIAL}' '%E{ID_FS_TYPE}' '%E{ID_SERIAL_SHORT}' '%E{ID_FS_UUID}' '%E{ID_FS_LABEL}'"
LABEL="do_automount_end"