No, the reason was the wrong "{{ item.item }}" reference.

Real world example:

    - name: TEST - Check /tmp/out.log for some lines expected to be there
      tags: test
      lineinfile:
        path: /tmp/out.log
        regexp: "{{ item.item }}"
        state: absent
      check_mode: yes
      changed_when: false
      register: checklog
      with_items:
        - { item: "^v=1"}
        - { item: "^s=Kurento Media Server" }
        - { item: "^IceCandidateFound" }
        - { item: "^IceGatheringDone" }
      failed_when: not checklog.found
    

The failing line is "v=1", because it is "v=0". The rest of the lines 
except the last is there. Result:


TASK [TEST - Check /tmp/out.log for some lines expected to be there] 
******************************************************************************************************************************************************************
failed: [ubuntuVM] (item={'item': '^v=1'}) => {"ansible_loop_var": "item", 
"backup": "", "changed": false, "failed_when_result": true, "found": 0, 
"item": {"item": "^v=1"}, "msg": ""}
ok: [ubuntuVM] => (item={'item': '^s=Kurento Media Server'}) => 
{"ansible_loop_var": "item", "backup": "", "changed": false, 
"failed_when_result": false, "found": 1, "item": {"item": "^s=Kurento Media 
Server"}, "msg": "1 line(s) removed"}
ok: [ubuntuVM] => (item={'item': '^IceCandidateFound'}) => 
{"ansible_loop_var": "item", "backup": "", "changed": false, 
"failed_when_result": false, "found": 12, "item": {"item": 
"^IceCandidateFound"}, "msg": "12 line(s) removed"}
failed: [ubuntuVM] (item={'item': '^IceGatheringDone'}) => 
{"ansible_loop_var": "item", "backup": "", "changed": false, 
"failed_when_result": true, "found": 0, "item": {"item": 
"^IceGatheringDone"}, "msg": ""}

PLAY RECAP 
****************************************************************************************************************************************************************************************************************************
ubuntuVM                   : ok=1    changed=0    unreachable=0    
failed=1    skipped=0    rescued=0    ignored=0   

So it works as expected

Solved.

[email protected] schrieb am Mittwoch, 3. November 2021 um 11:43:55 UTC+1:

> If it never fails is just because you are iterating over items and 
> registering the result of each iteration. So the condition is only 
> evaluated only on the last iteration. 
>
> On Wed, Nov 3, 2021, 00:27 'Neil Young' via Ansible Project <
> [email protected]> wrote:
>
>> Oops. Disregard please:
>>
>> regexp: "{{ item.item }}"
>>
>> Neil Young schrieb am Mittwoch, 3. November 2021 um 01:19:20 UTC+1:
>>
>>> One of the most recommended things is to use "lineinfiles" with some 
>>> special attributes for just finding a line in a file.
>>>
>>> I have a weird issue with this. If I just lookup one line, like so:
>>>
>>>  - name: TEST - Check /tmp/out.log
>>>       lineinfile:
>>>         path: /tmp/out.log
>>>         regexp: "^bla"
>>>         state: absent
>>>       check_mode: yes
>>>       changed_when: false
>>>       register: checklog
>>>       failed_when: not checklog.found
>>>
>>> This sequence fails (as expected), because the "bla" line is not in the 
>>> file. If I enter a string, which is in the file, it doesn't fail. So far so 
>>> good.
>>>
>>> Now I wanted to examine several lines, but this never fails. "line1" to 
>>> "line4" are in, "bla" not.
>>> But the result is OK...
>>>
>>>
>>>   - name: TEST - Check /tmp/out.log
>>>       lineinfile:
>>>         path: /tmp/out.log
>>>         regexp: "{{ item }}"
>>>         state: absent
>>>       check_mode: yes
>>>       changed_when: false
>>>       register: checklog
>>>       with_items:
>>>         - {item: "^line1"}
>>>         - {item: "^line2"}
>>>         - {item: "^line3"}
>>>         - {item: "^line4"}
>>>         - {item: "^bla"}
>>>       failed_when: not checklog.found
>>>
>>> Does that make sense at all?
>>>
>>> -- 
>> 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 [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/e1146c52-8a89-4634-a212-e9bc8ab07b30n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/e1146c52-8a89-4634-a212-e9bc8ab07b30n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/20c50d92-f7a6-4599-a71b-53d06fac57e8n%40googlegroups.com.

Reply via email to