Hi Thomas,
Thank you for the idea, however, after looking at it, I see FAI as technology akin to KickStart, MAAS, AutoYast, etc.
With FAI, I can see a problem with having Cloud-specific classes (e.g. Azure, Google, Azure, DigitalOcean, et al) in that we would essentially re-create Cloud-init's data-sources. Knowing which cloud an instance is on is non-trivial (for example, Alibaba uses CPU ID, AWS machine UUID, Azure DHCP options, DigitalOcean SMBIOS, OpenStack CDROM, etc). Merely detecting the cloud and then translating cloud-specific meta-data into a common language has been a continual headache for the cloud-init maintainers. And as someone who has written a few of the cloud-init data-sources, I can tell you first hand that re-creating them in bash would be painful. In fact other projects that have attempted to redo Cloud-init have generally failed due to poor adoption.
The alternative to detecting clouds is to do a build per-cloud; this makes my spidey sense tingle as smaller clouds would end up being left out. IMO, that would run counter to the ethos of Debian since cloud images would be exclusive provenance of the bigger clouds.
The other question that I have is how would FAI deal with snapshots/clones of prior booted machines. Most cloud's allow for some method of cloning an instance and then relaunching them. Without some agent that run each and every boot to determine if an instance is a new instance then a new instance may not be accessible or properly configured.
I'll be the first to say that Cloud-init and related technologies are far from perfect, but right now Cloud-init is the best cross-distro technology. I support Cloud-init versions 0.7.5 through 17.01 on five distributions -- it is a never-ending headache, but it is far too useful to abandon.
In my prior job I did quite a bit on the Cloud image builds for Ubuntu. My $0.02 single-source building doesn't work; it may serve the needs of the project but will fail to meet the needs of the Clouds. If the current build methods are insufficient, I would hope that we can come up with something that works for both Cloud and the Cloud user. Otherwise, what Debian will end up re-creating the Ubuntu Certified Public Cloud project (but worse).
That said, I do like the idea of thinking outside the box. Part of the reason why I wanted to come to this sprint was providing Debian 9 on DigitalOcean was a bit of pain. I think it would be great if we can make Debian easier for clouds and their customers to consume and use.
~Ben