How to loop through blockinfile?

I have the following task, which appears to execute successfully, but I end up with only one block (the last), while I actually want to have a block for each item entered into my file. How do I do that?

task:

  • name: configure dns zone SRV records
    delegate_to: 127.0.0.1
    blockinfile:
    dest: /home/ansible/env/playbooks/vars/bind.yml
    state: present
    backup: yes
    insertafter: ‘^bind_zone_services:.*’
    marker: “# {mark} ANSIBLE MANAGED SRV BLOCK”
    block: |
  • name: “{{ item.name }}”
    weight: 100
    port: “{{ item.port }}”
    target: “{{ ansible_hostname }}”
    with_items:
  • { name: _ldap._tcp, port: 389 }
  • { name: _kerberos._tcp, port: 88 }
  • { name: _kerberos._udp, port: 88 }
  • { name: _kerberos-master._tcp, port: 88 }
  • { name: _kerberos-master._udp, port: 88 }
  • { name: _kpasswd._tcp, port: 464 }
  • { name: _kpasswd._udp, port: 464 }
  • { name: _ntp._udp, port: 123 }

Result

  • name: _ntp._udp
    weight: 100
    port: 123
    target: hostname