I’m in the same situation.
Immediately after the successful vm deployment, my playbook adds the machine to the « dynamic » inventory in AWX (using the API) so the next job template in the workflow can pick it up.
I have 6000+ vms in that inventory. It takes more than 10min to extract the inventory from the vCenter. So syncing on every launch is not an option.
I only sync the inventory once every night. During the refresh, the previously added vm is merged by the one discovered via the vCenter (I use the « overwrite » option in the inventory sync).
I use that approach for a while now. The only drawback is that, if you want to create a single workflow that create the vm and also does something on it (using the inventory to cache facts), you have to pass the vm name to both an extra vars and a limit. It’s not elegant but I didn’t find any other way.
Hope it helps.