.. versionadded:: fallible
Note
This feature has not been included in a released version of ansible-core yet, and is a tech preview as part of fallible.
This feature allows a playbook author to register multiple variables on a task, manipulate the data before registered to that variable, and provides implicit register names scoped to a single task. Individual loop results cannot be manipulated, this feature only applies to the final task result.
- command: "echo two"
register:
result2: ansible_result
stdout2: ansible_result.stdout
In the above example result2: ansible_result produces the same result as if using register: result2 has historically provided. The stdout2: ansible_result.stdout performs jinja2 evaluation on the result represented by ansible_result and accesses the stdout attribute or key.
This is roughly equivalent to performing these 2 tasks:
- command: "echo two"
register: result2
- set_fact:
stdout2: '{{ result2.stdout }}'
In addition to this functionality, this feature offers 2 implicit register variable names scoped to the task for use in when, changed_when, failed_when, and until.
- command: "echo two"
changed_when: ansible_result.stdout_lines|first == 'not two'
- command: "echo {{ item }}"
loop:
- one
- two
- three
changed_when: ansible_loop_result.stdout_lines|first == 'three'
The ansible_result variable contains the full result of the task, whereas ansible_loop_result is the result of individual loop iterations. Register expressions cannot reference ansible_loop_result.
Note
add_host and group_by do not support register projections when used in a loop. The traditional register: result syntax must be used for these actions.