--- #################################################################### # WARNING: These are designed specifically for Ansible tests # # and should not be used as examples of how to write Ansible roles # #################################################################### # Copyright (c) Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later - name: Run tests include_role: name: callback vars: tests: - name: Not using diy callback options environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set playbook_on_start_msg callback using environment variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy ANSIBLE_CALLBACK_DIY_PLAYBOOK_ON_START_MSG: "Sample output Sample playbook message" playbook: | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg expected_output: - "Sample output Sample playbook message" - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set playbook_on_play_start_msg callback using play variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - name: Sample play name hosts: testhost gather_facts: false vars: ansible_callback_diy_playbook_on_play_start_msg: Sample output {{ ansible_callback_diy.play.name }} tasks: - name: Sample task name debug: msg: sample debug msg expected_output: - "Sample output Sample play name" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set playbook_on_task_start_msg callback using play variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false vars: ansible_callback_diy_playbook_on_task_start_msg: Sample output {{ ansible_callback_diy.task.name }} tasks: - name: Sample task name debug: msg: sample debug msg expected_output: - "" - "PLAY [testhost] ****************************************************************" - "Sample output Sample task name" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set playbook_on_task_start_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg vars: ansible_callback_diy_playbook_on_task_start_msg: Sample output {{ ansible_callback_diy.task.name }} expected_output: - "" - "PLAY [testhost] ****************************************************************" - "Sample output Sample task name" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set runner_on_ok_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg vars: ansible_callback_diy_runner_on_ok_msg: Sample output {{ ansible_callback_diy.result.output.msg }} expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "Sample output sample debug msg" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set runner_on_failed_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg failed_when: true ignore_errors: true vars: ansible_callback_diy_runner_on_failed_msg: Sample output Sample failure message expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "Sample output Sample failure message" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 " - name: Set runner_on_skipped_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg when: false vars: ansible_callback_diy_runner_on_skipped_msg: Sample output Skipped {{ ansible_callback_diy.task.name }} expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "Sample output Skipped Sample task name" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 " - name: Set runner_item_on_ok_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg {{ item }} loop: - sample item 1 - sample item 2 - sample item 3 vars: ansible_callback_diy_runner_item_on_ok_msg: Sample output Looping {{ ansible_callback_diy.result.output.msg }} expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "Sample output Looping sample debug msg sample item 1" - "Sample output Looping sample debug msg sample item 2" - "Sample output Looping sample debug msg sample item 3" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set runner_item_on_failed_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg {{ item }} loop: - sample item 1 - sample item 2 - sample item 3 failed_when: item == 'sample item 2' ignore_errors: true vars: ansible_callback_diy_runner_item_on_failed_msg: Sample output Looping sample failure message expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => (item=sample item 1) => {" - " \"msg\": \"sample debug msg sample item 1\"" - "}" - "Sample output Looping sample failure message" - "ok: [testhost] => (item=sample item 3) => {" - " \"msg\": \"sample debug msg sample item 3\"" - "}" - # Apparently a bug was fixed in Ansible, as before it ran through with "All items completed" - "fatal: [testhost]: FAILED! => {\"msg\": \"All items completed\"}" - "fatal: [testhost]: FAILED! => {\"msg\": \"One or more items failed\"}" - "...ignoring" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 " - name: Set runner_item_on_skipped_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg {{ item }} loop: - sample item 1 - sample item 2 - sample item 3 when: item != 'sample item 2' vars: ansible_callback_diy_runner_item_on_skipped_msg: Sample output Looping Skipped {{ ansible_callback_diy.result.output.item }} expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => (item=sample item 1) => {" - " \"msg\": \"sample debug msg sample item 1\"" - "}" - "Sample output Looping Skipped sample item 2" - "ok: [testhost] => (item=sample item 3) => {" - " \"msg\": \"sample debug msg sample item 3\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set playbook_on_stats_msg callback using play variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false vars: ansible_callback_diy_playbook_on_stats_msg: |+2 Sample output stats =============================== {% for key in ansible_callback_diy.stats | sort %} {% set color_one = "" %} {% set color_two = "" %} {% if ansible_callback_diy.stats[key] %} {% if key == 'ok' %} {% set prefix = ' ' %} {% set suffix = ' ' %} {% elif key == 'changed' %} {% set prefix = ' ' %} {% set suffix = ' ' %} {% elif key == 'processed' %} {% set prefix = ' ' %} {% set suffix = ' ' %} {% elif key == 'skipped' %} {% set prefix = ' ' %} {% set suffix = ' ' %} {% else %} {% set prefix = "" %} {% set suffix = "" %} {% endif %} {{ color_one }}{{ "%s%s%s" | format(prefix,key,suffix) }}{{ color_two }}: {{ ansible_callback_diy.stats[key] | to_nice_yaml }} {% endif %} {% endfor %} tasks: - name: Sample task name debug: msg: sample debug msg expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - " Sample output stats" - "===============================" - " ok : testhost: 1" - "" - " processed : testhost: 1" - name: Suppress output on playbook_on_task_start_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg vars: ansible_callback_diy_playbook_on_task_start_msg: '' expected_output: - "" - "PLAY [testhost] ****************************************************************" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Suppress output on runner_on_ok_msg callback using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg vars: ansible_callback_diy_runner_on_ok_msg: '' expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set runner_on_ok_msg_color using task variable environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: Sample task name debug: msg: sample debug msg vars: ansible_callback_diy_runner_on_ok_msg: Sample output {{ ansible_callback_diy.result.output.msg }} ansible_callback_diy_runner_on_ok_msg_color: blue expected_output: - "" - "PLAY [testhost] ****************************************************************" - "" - "TASK [Sample task name] ********************************************************" - "Sample output sample debug msg" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " - name: Set on_any_msg environment: ANSIBLE_NOCOLOR: 'true' ANSIBLE_FORCE_COLOR: 'false' ANSIBLE_STDOUT_CALLBACK: community.general.diy ANSIBLE_CALLBACK_DIY_ON_ANY_MSG: foo playbook: !unsafe | - hosts: testhost gather_facts: false tasks: - name: A loop debug: msg: "{{ item }}" loop: - 1 - 2 - name: Sample task name debug: msg: sample debug msg - name: Skipped task command: ls / when: false expected_output: - "foo" - "" - "PLAY [testhost] ****************************************************************" - "foo" - "" - "TASK [A loop] ******************************************************************" - "foo" - "foo" - "ok: [testhost] => (item=1) => {" - " \"msg\": 1" - "}" - "foo" - "ok: [testhost] => (item=2) => {" - " \"msg\": 2" - "}" - "foo" - "foo" - "" - "TASK [Sample task name] ********************************************************" - "foo" - "foo" - "ok: [testhost] => {" - " \"msg\": \"sample debug msg\"" - "}" - "foo" - "" - "TASK [Skipped task] ************************************************************" - "foo" - "foo" - "skipping: [testhost]" - "foo" - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 " - "" - "foo"