79 lines
2.1 KiB
YAML
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
|
|
|
|
|
|
...
|