--- - name: Create inventory based on Webook commit hosts: all gather_facts: no become: no vars_files: - vars/defaults.yml tasks: - name: Set provision_host to tower_provision_host or default set_fact: provision_host: "{{ tower_provision_host | default(ansible_play_hosts | join(',')) }}" when: tower_webhook_payload is not defined - name: Set provision_host to Webhook files set_fact: provision_host: "{{ [item | split('/') | last] + provision_host | default([]) }}" loop: "{{ tower_webhook_payload.commits[0].added + tower_webhook_payload.commits[0].modified }}" when: tower_webhook_payload is defined - name: "Create in-memory inventory for tower_provision_host" add_host: name: "{{ item }}" groups: - remdiation delegate_to: localhost loop: "{{ provision_host.split(',') }}" when: tower_webhook_payload is not defined - name: "Create in-memory inventory for Webhook" add_host: name: "{{ item }}" groups: - remdiation delegate_to: localhost loop: "{{ provision_host }}" when: tower_webhook_payload is defined # =========================================================================== # - name: Split up hosts into single job runs hosts: remdiation become: no gather_facts: no vars_files: - vars/defaults.yml tasks: - name: Launch job per each host no_log : "{{ __no_log | default('yes') }}" uri : url : "{{ tower_remdiation_workflow }}" force_basic_auth : yes user : "{{ tower_user }}" password : "{{ tower_password }}" body_format : json method : POST status_code : 201 body: extra_vars: tower_provision_host: "{{ item }}" loop: "{{ ansible_play_hosts }}" run_once: yes ...