I use Ansible for all my deployments and just got a PXE boot set up with a preseed file to automate the install process and get the host ready to run playbooks.
I’ve been really pleased with this strategy overall. I think that Ansible works really well for programmatically generating config files which in turn makes moving applications between servers effortless. I control docker volume mounts with ansible variables and encrypt secrets with ansible vault so I can do everything all in one place.
Troubleshooting issues is a lot easier and recovering from a backup is faster and a requires less effort since I can just pull down the Ansible config from git and redeploy.