---

- name: Get local public IP
  ansible.builtin.uri:
    url: "https://ipinfo.io/ip"
    return_content: true
  register: local_public_ip

- name: Initiate spf_txt_records dict
  ansible.builtin.set_fact:
    spf_txt_records: {}

- name: Set SPF TXT records
  loop: "{{ virtual_domains }}"
  loop_control:
    loop_var: domain
  ansible.builtin.set_fact:
    spf_txt_records: "{{ spf_txt_records | combine({domain: domain + '. IN TXT \"v=spf1 ip4:' + local_public_ip.content + ' mx ~all\"'}) }}"