How to loop through blockinfile?

379 views
Skip to first unread message

Joanna Delaporte

unread,
May 31, 2016, 1:50:29 PM5/31/16
to Ansible Project
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

Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages