lineinfile with_items only updates last line, despite four changed messages

902 views
Skip to first unread message

Mark Conlin

unread,
Mar 17, 2014, 2:51:44 PM3/17/14
to ansible...@googlegroups.com

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"}

Matt Martz

unread,
Mar 21, 2014, 8:20:25 AM3/21/14
to Mark Conlin, ansible...@googlegroups.com
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:

  vars:
    limits_lines
: 
       
 - 'root soft nofile 65535'
       
 - 'root hard nofile 65535'
       
 - 'root soft memlock unlimited'
       
 - 'root hard memlock unlimited'


  tasks
:
   
 - name: append string 
      lineinfile
: dest=/etc/security/limits.conf

                  line
="{{item}}"
      with_items
: limits_lines
-- 
Matt Martz
ma...@sivel.net
--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/b2674cc4-01a9-4b1b-ab54-6a6acdb1097a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael DeHaan

unread,
Mar 21, 2014, 9:10:47 AM3/21/14
to ansible...@googlegroups.com, Mark Conlin
The regexp needs to match the line being added.


Reply all
Reply to author
Forward
0 new messages