From d077127c7eed7064d63f9690a437d92675cf45df Mon Sep 17 00:00:00 2001 From: Chris Hammer Date: Wed, 4 May 2022 17:14:21 -0400 Subject: [PATCH] tidy gitlab-webhook-debug.yml; initial split-host-job-launch-webhook.yml implementation --- gitlab-webhook-debug.yml | 6 +-- split-host-job-launch-webhook.yml | 63 +++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 split-host-job-launch-webhook.yml diff --git a/gitlab-webhook-debug.yml b/gitlab-webhook-debug.yml index 6b3bf49..98ff423 100644 --- a/gitlab-webhook-debug.yml +++ b/gitlab-webhook-debug.yml @@ -9,9 +9,9 @@ - name: Debug Gitlab Webhook debug: msg: - - "{{ __message | default('Not defined', True) }}" - - "{{ tower_webhook_payload.event_name | default('Not defined', True) }}" - - "{{ tower_webhook_payload.checkout_sha | default('Not defined', True) }}" + - "{{ __message | default('Not defined', True) }}" + - "{{ tower_webhook_payload.event_name | default('Not defined', True) }}" + - "{{ tower_webhook_payload.checkout_sha | default('Not defined', True) }}" - "{{ tower_webhook_payload.commits[0].message | default('Not defined', True) }}" - "{{ tower_webhook_payload.commits[0].added | default('Not defined', True) }}" - "{{ tower_webhook_payload.commits[0].modified | default('Not defined', True) }}" diff --git a/split-host-job-launch-webhook.yml b/split-host-job-launch-webhook.yml new file mode 100644 index 0000000..e95795a --- /dev/null +++ b/split-host-job-launch-webhook.yml @@ -0,0 +1,63 @@ +--- +- name: Create inventory based on extra_vars + hosts: all + gather_facts: no + become: no + + + vars_files: + - vars/defaults.yml + + + vars: + provision_host: "{{ tower_provision_host | default(ansible_play_hosts | join(',')) }}" + + + tasks: + - name: Set provision_host to Gitlab commit message if defined + set_fact: + provision_host: "{{ tower_webhook_payload.commits[0].message }}" + when: tower_webhook_payload.commits[0].message is defined + + + - name: "Create in-memory inventory" + add_host: + name: "{{ item }}" + groups: + - remdiation + delegate_to: localhost + loop: "{{ provision_host.split(',') }}" + + +# =========================================================================== # + + +- 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 + + +...