In case anyone else is looking to do this, I was able to compile an ubuntu focal server image with cloud-init with the following (after checking https://docs.armbian.com/Developer-Guide_User-Configurations/):
Modify userpatches/lib.config to install the cloud-init package:
PACKAGE_LIST_ADDITIONAL="$PACKAGE_LIST_ADDITIONAL cloud-init"
I then added my cloud-init files (user-data and meta-data) to the userpatches/overlay/ directory (I put them in a "cloud-init" folder), and added this to userpatches/customize-image.sh:
cp -r /tmp/overlay/cloud-init /boot/cloud-init
echo "extraargs=ds=nocloud;s=/boot/cloud-init/" >> /boot/armbianEnv.txt
Probably some extra customization is warranted (I needed to make some other unrelated changes), but this should be enough to enable cloud-init, and you can modify the arguments passed to /boot/armbianEnv.txt to meet your needs if you need a different datasource/whatever.
I've fairly new to ArmBian and as I'm trying to setup a cluster of Rock64's, I'm wondering if there's any support for using cloud-init (user-data) to be able to setup a board on boot?