You seems to have an issue with certbot. Maybe you can check the permission first.
Otherwise,
Your certbot command seems to be the process stopping your haproxy. You have to check if you have another script running as in your script it should issue a start command, and the logs are showing a reload command.
At work, to manage certs with certbot without having to restart haproxy, we have set up an acl catching Letsencrypt requests :
acl letsencrypt path_beg /.well-known/acme-challenge/
use_backend letsencrypt if letsencrypt
...
backend letsencrypt
server localhost 127.0.0.1:8080
If you use certbot on the same server, you can change the certbot port (use 8080 for example) and renew with --http-01-port 8080 option.
Once renewed, you just have reload haproxy to load the new certs (maybe with the post-hook, we don’t use it so i don’t know how it works)