Files
tower-tests/split-host-job-launch-webhook-files.yml
2022-09-02 11:10:59 -04:00

79 lines
2.1 KiB
YAML

---
- name: Create inventory based on Webook commit
hosts: all
gather_facts: no
become: no
vars_files:
- vars/defaults.yml
tasks:
- name: Provision hosts defined via tower_provision_host or defaults
block:
- name: Set provision_host to tower_provision_host or default
set_fact:
provision_host: "{{ tower_provision_host | default(ansible_play_hosts | join(',')) }}"
- 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: Provision hosts defined via tower_webhook_payload
block:
- 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 }}"
- name: "Create in-memory inventory for Webhook"
add_host:
name : "{{ item }}"
groups :
- remdiation
delegate_to : localhost
ignore_errors : yes
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
...