--- - name: Create inventory based on passed extra_vars hosts: localhost gather_facts: no become: no vars: provision_host: "{{ tower_provision_host | default('localhost') }}" tasks: - name: "Create in-memory inventory for {{ provision_host }}" add_host: name: "{{ provision_host }}" groups: - remdiation # =========================================================================== # - name: Verify file existence and handle errors if needed hosts: remdiation gather_facts: no become: no tasks: - name: Run file test block: - name: "Test #1: register file contents" command : cmd : cat /tmp/hello-ansible.txt changed_when : no register : r_check_file - name: "Test #2: do something else" debug: msg: Something, something, and something! rescue: - name: Exception caught debug: msg: - "tower_provision_host : {{ inventory_hostname }}" - "tower_provision_rc : {{ r_check_file.rc }}" - "tower_provision_stdout : {{ r_check_file.stdout }}" - "tower_provision_stderr : {{ r_check_file.stderr }}" - "tower_provision_msg : {{ r_check_file.msg }}" - name: Execute recovery API callback uri: url : "https://git.thezengarden.net/api/v4/projects/119/repository/commits" headers : PRIVATE-TOKEN : "glpat-yb8XPJ8EJ7K5Cao9S8JE" method : POST status_code : 201 body_format : json return_content : no validate_certs : no body: id: 119 branch: main commit_message: "{{ inventory_hostname }} - FAILED: {{ r_check_file.msg }}" author_name: Chris Hammer author_email: chris.hammer@redhat.com actions: - action: create file_path: "failed_jobs/{{ inventory_hostname }}.txt" content: | tower_provision_host : {{ inventory_hostname }} tower_provision_rc : {{ r_check_file.rc }} tower_provision_stdout : {{ r_check_file.stdout }} tower_provision_stderr : {{ r_check_file.stderr }} tower_provision_msg : {{ r_check_file.msg }} always: - name: Job complete debug: msg: - "tower_provision_host : {{ inventory_hostname }}" - "tower_provision_failed : {{ r_check_file.failed }}" ...