Getting a message on folders created in a loop

I’m running a playbook that should create 2 folders in a loop. If the folder is not existing, I wish to get a message that folders was created

In my scenario, folder 1 already exists and only folder 2 was created. But the message was skipped – I’m guessing that the register is being updated on every loop and the last task is getting the last update of the register.

My goal Is to show a message on every folder that was created.

Thanks

Playbook:

- hosts: gw
  become: true
  become_user: hdfs
  vars:
    folders:
        - /folder1
        - /folder2

  tasks:

   - name: create Main HDFS folders
     shell: hadoop fs -mkdir {{ item }}
     register: result
     ignore_errors: yes
     with_items: "{{ folders }}"

   - debug:
       msg: " {{ result }}"

   - debug:
       msg: folder created
     when: result is not failed

Output:

PLAY [gw] *******************************************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************************

ok: [10.201.51.16]

TASK [create Main HDFS folders] *********************************************************************************************************************************************************

failed: [10.201.51.16] (item=/folder1) => {“ansible_loop_var”: “item”, “changed”: true, “cmd”: “hadoop fs -mkdir /folder1”, “delta”: “0:00:02.575512”, “end”: "2020-05-05 06:41:14.912389 ", “item”: “/folder1”, “msg”: “non-zero return code”, “rc”: 1, “start”: “2020-05-05 06:41:12.336877”, “stderr”: “mkdir: /folder1': File exists", "stderr_lines": ["mkdir: /folder1’: Fi le exists”], “stdout”: “”, “stdout_lines”: []}

changed: [10.201.51.16] => (item=/folder2)

…ignoring

TASK [debug] ****************************************************************************************************************************************************************************

ok: [10.201.51.16] => {

“msg”: " {‘msg’: u’All items completed’, ‘failed’: True, ‘changed’: True, ‘results’: [{‘stderr_lines’: [u"mkdir: /folder1': File exists\"], 'ansible_loop_var': u'item', u'end': u' 2020-05-05 06:41:14.912389', u'failed': True, u'stdout': u'', u'changed': True, u'rc': 1, u'start': u'2020-05-05 06:41:12.336877', u'cmd': u'hadoop fs -mkdir /folder1', 'item': u'/folde r1', u'delta': u'0:00:02.575512', u'invocation': {u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'strip_empty_ends': True, u'_raw_params': u'hadoop fs -m kdir /folder1', u'removes': None, u'argv': None, u'warn': True, u'chdir': None, u'stdin_add_newline': True, u'stdin': None}}, 'stdout_lines': [], u'stderr': u\"mkdir: /folder1’: File e xists", u’msg’: u’non-zero return code’}, {‘stderr_lines’: [], ‘ansible_loop_var’: u’item’, u’end’: u’2020-05-05 06:41:18.125812’, ‘failed’: False, u’stdout’: u’‘, u’changed’: True, u’ rc’: 0, ‘item’: u’/folder2’, u’cmd’: u’hadoop fs -mkdir /folder2’, u’stderr’: u’‘, u’delta’: u’0:00:02.609342’, u’invocation’: {u’module_args’: {u’creates’: None, u’executable’: None, u ‘_uses_shell’: True, u’strip_empty_ends’: True, u’_raw_params’: u’hadoop fs -mkdir /folder2’, u’removes’: None, u’argv’: None, u’warn’: True, u’chdir’: None, u’stdin_add_newline’: True, u’stdin’: None}}, ‘stdout_lines’: [], u’start’: u’2020-05-05 06:41:15.516470’}]}"

}

TASK [debug] ****************************************************************************************************************************************************************************

skipping: [10.201.51.16]

PLAY RECAP ******************************************************************************************************************************************************************************

10.201.51.16 : ok=3 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=1

You want to loop over the results, each item is stored in the results list.

- debug:
       msg: folder created {{item.item}}
     loop: '{{result.results}}'
     when: item is not failed