A melhor prática seria usar o host-vars. host-vars funciona exatamente da mesma forma que group-vars mas define variáveis por host.
Você pode ter um arquivo host_vars/host_a
com o conteúdo
cert: a.my.endpoint.com.pem
... e use cert
como a variável na sua tarefa.
Mas o seu problema continua o mesmo:
I primarily don't like it because it forces you to remember to update hosts in two places (the hostfile and the vars file).
Mas você também pode definir vars de host em seu inventário. Isso fica feio se você tem mais variáveis para definir, mas se essa é a única e seu objetivo é gerenciar todas as definições em um só lugar, você pode fazer assim:
# hostfile
[prod]
host_a cert=a.my.endpoint.com.pem
host_b cert=b.my.endpoint.com.pem
host_c cert=c.my.endpoint.com.pem
Em ambos os casos, sua tarefa reduziria para isso:
- name: upload haproxy server certificates
copy:
src: "{{ cert }}"
dest: "/etc/haproxy/ssl/{{ cert }}"
backup: yes
notify:
- restart haproxy
tags:
- haproxy