Device routes and multiple routes with different gateways was broken in cloud-init resulting in everything being dumped and/or overwritten in a single [Route] section.

This took a ton of time to investigate, but in the end I submitted a MR to fix the behavior and add device route support.

https://github.com/canonical/cloud-init/pull/1868

cloud-init PR 1868 screenshot