Snake bites its tail problem automating configuration of Certbot with Ansible
Don't read the text written on Certbot site, the real talk is in the documentation.
In order to make less actions, consider grouping configs by domains. Plays for a playbook in order to achieve what you want:
Deploy certbot and nginx with no config files, then for each domain on host:

Deploy an nginx config for default server with location /.well-known/acme-challenge { root /etc/letsencrypt/challenges; }
Reload nginx config
Check existence of a certificate for the domain in /etc/letsencrypt/live/domain
If cert is already presented, end the run
certbot certonly -n --web-root=/etc/letsencrypt/challenges --keep -d domain to make a cert request
Check for cert in a retry loop
Fix permissions for live certificates
Deploy normal nginx configs

You may deploy a stub config per domain instead of using the default server. The playbook could be run asynchronously for each domain.