lineinfile with_items only updates last line, despite four changed messages

I would like to add a few lines to the end of a config file using lineinfile and with_items.

When I run this yaml, I see changed log messages for all four entries (see below). However when I look at the file, only the very last line has been added.
Your thoughts?

Thanks,
Mark

`
vars:
limits_lines:

  • { key: ‘’, value: ‘root soft nofile 65535’}
  • { key: ‘’, value: ‘root hard nofile 65535’}
  • { key: ‘’, value: ‘root soft memlock unlimited’}
  • { key: ‘’, value: ‘root hard memlock unlimited’}

tasks:

  • name: append string
    lineinfile: dest=/etc/security/limits.conf
    regexp={{item.key}}
    insertafter=EOF
    line=“{{item.value}}”
    with_items: limits_lines
    `

Output:

<127.0.0.1> REMOTE_MODULE lineinfile dest=/etc/security/limits.conf regexp= insertafter=EOF line="root soft nofile 65535" changed: [machine] => (item={'key': '', 'value': 'root soft nofile 65535'}) => {"backup": "", "changed": true, "item": {"key": "", "value": "root soft nofile 65535"}, "msg": "line replaced"} <127.0.0.1> REMOTE_MODULE lineinfile dest=/etc/security/limits.conf regexp= insertafter=EOF line="root hard nofile 65535" changed: [machine] => (item={'key': '', 'value': 'root hard nofile 65535'}) => {"backup": "", "changed": true, "item": {"key": "", "value": "root hard nofile 65535"}, "msg": "line replaced"} <127.0.0.1> REMOTE_MODULE lineinfile dest=/etc/security/limits.conf regexp= insertafter=EOF line="root soft memlock unlimited" changed: [machine] => (item={'key': '', 'value': 'root soft memlock unlimited'}) => {"backup": "", "changed": true, "item": {"key": "", "value": "root soft memlock unlimited"}, "msg": "line replaced"} <127.0.0.1> REMOTE_MODULE lineinfile dest=/etc/security/limits.conf regexp= insertafter=EOF line="root hard memlock unlimited" changed: [machine] => (item={'key': '', 'value': 'root hard memlock unlimited'}) => {"backup": "", "changed": true, "item": {"key": "", "value": "root hard memlock unlimited"}, "msg": "line replaced"}

I believe what you are doing is constantly overwriting the last line.

I think, based on the examples and my testing, you would simply want to do:

The regexp needs to match the line being added.