Yea their every cloud is pretty limited. The world isn't limited to AWS/GCP. For VM hosting, there's Vultr, DigitalOcean, Linode. And for app hosting you have Heroku, Jelastic, et. al.
It's difficult to create something that works universally since the APIs can be radically different. Terraform is a nice attempt to plug in different hosting solutions and configuration layers (puppet, anisble, chef), but your configuration still varies pretty heavily per provider and I've often struggled with it enough that I gave up and just wrote scripts to call my providers API directly.