cloud-init user data has manage_etc_hosts hard coded to true

Yes, per VM through a custom Cloud-Init user-data snippet. The generated user-data still emits manage_etc_hosts: true; cicustom lets you supply your own user-data instead. Use qm cloudinit dump VMID user as a starting point, keep the user-data settings you need, and set manage_etc_hosts: false in the YAML. If the dump shows a masked password, leave out the placeholder and configure password authentication separately if you use it. Store it on a storage that supports snippets, then set the user=STORAGE:snippets/FILE.yaml entry in cicustom. Preserve any other entries already in cicustom. Proxmox still generates network data and metadata when you leave those entries unset. If you migrate the VM, the snippet must be available on the destination node as well. Proxmox Cloud-Init documentation

The user-data snippet replaces the whole generated user-data section, so a file with just that one setting would also drop the other generated user-data settings. Once the guest reads the new config, false tells cloud-init to leave /etc/hosts alone. If you need the previous contents back, restore them separately. cloud-init module reference

OpenAI Codex assisted with drafting this reply.