initial project commit

This commit is contained in:
Chris Hammer 2023-06-21 19:18:42 -04:00
commit bc812e3bc9
7 changed files with 138 additions and 0 deletions

4
.ansible-lint Normal file
View File

@ -0,0 +1,4 @@
skip_list:
- yaml[colons]
- yaml[empty-lines]
- yaml[line-length]

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
collections
facts.d
.vscode

9
ansible.cfg Normal file
View File

@ -0,0 +1,9 @@
[defaults]
inventory = hosts
roles_path = roles
collections_path = collections
fact_caching_timeout = 300
host_key_checking = False
display_skipped_hosts = False
bin_ansible_callbacks = True
callbacks_enabled = ansible.posix.profile_tasks, ansible.posix.timer

1
hosts Normal file
View File

@ -0,0 +1 @@
localhost ansible_connection=local

3
requirements.yml Normal file
View File

@ -0,0 +1,3 @@
---
collections:
- name: ansible.posix

View File

@ -0,0 +1,88 @@
- name: Increment counter
ansible.builtin.set_fact:
rcount: "{{ 1 if rcount is undefined else rcount | int + 1 }}"
- name: Abort run and notify if retries exceed defined limits
when: rcount|int >= fail_count
block:
- name: Show rcount and num_retries
ansible.builtin.debug:
msg: "Failed on retry {{ rcount }} with a max of {{ num_retries }}"
- name: Log failure to API
ansible.builtin.uri:
url : "{{ webhook }}"
headers:
Authorization : "Token {{ webhook_key }}"
Content-type : 'application/json'
method : POST
status_code : 200
validate_certs : false
return_content : false
body_format : json
body:
Cloudy: "With a chance of meatballs."
- name: End condition met. Aborting...
ansible.builtin.fail:
msg: "Bye"
- name: We were successful
when: rcount|int == num_retries
block:
- name: Show rcount and num_retries
ansible.builtin.debug:
msg: "Success on retry {{ rcount }} with a max of {{ num_retries }}"
- name: Log success to API
ansible.builtin.uri:
url : "{{ webhook }}"
headers:
Authorization : "Token {{ webhook_key }}"
Content-type : 'application/json'
method : POST
status_code : 200
validate_certs : false
return_content : false
body_format : json
body:
Somewhere: "Over the rainbow."
- name: End condition met. Exiting gracefully...
ansible.builtin.meta: end_play
- name: Run a series of test commands
ansible.builtin.command : "{{ item }}"
changed_when : false
loop : "{{ check_commands }}"
register : r_check_commands
- name: Current status
ansible.builtin.debug:
msg: "Currently on run {{ rcount }} of {{ num_retries }}."
run_once: true
- name: Log status update to API
ansible.builtin.uri:
url : "{{ webhook }}"
headers:
Authorization : "Token {{ webhook_key }}"
Content-type : 'application/json'
method : POST
status_code : 200
validate_certs : false
return_content : false
body_format : json
body:
Itsa: "me! Mario! - Finished run {{ rcount }} of {{ num_retries }}."
- name: Pause for effect
ansible.builtin.pause:
seconds: "{{ pause_time }}"
- name: Include ourself for recursion
ansible.builtin.include_tasks: tasks/long_running_tasks.yml
when: rcount|int <= num_retries

30
webhook_test_1.yml Normal file
View File

@ -0,0 +1,30 @@
- name: "Webhook Test 1: Long running job"
hosts: all
gather_facts: false
become: false
vars:
pause_time : 1
num_retries : 5
fail_count : 30
poll_interval : 10
webhook : "https://webhooks.thezengarden.net/webhook-callback-poc"
webhook_key : "fYnWhoF42NFsN2p5tiB3Wd65HgB1oc-Qo2jXS6TTmZov"
check_commands:
- uname -a
- uptime
- ping -c 1 127.0.0.1
tasks:
- name: Include long_running_tasks.yml
ansible.builtin.include_tasks: tasks/long_running_tasks.yml
handlers:
- name: Bob
ansible.builtin.debug:
msg: "We've reached equilibrium"