Initial commit

This commit is contained in:
Julian Rother 2025-02-12 19:28:00 +01:00
commit f381aedff5
Signed by: julian
GPG key ID: C19B924C0CD13341
4 changed files with 83 additions and 0 deletions

36
files/netbox-webhook-handler Executable file
View file

@ -0,0 +1,36 @@
#!/bin/python3
import threading
import subprocess
import logging
import time
import bottle
class HandlerThread(threading.Thread):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.trigger = threading.Event()
self.trigger.set()
def run(self):
while True:
self.trigger.wait()
self.trigger.clear()
result = subprocess.run(['/etc/netbox_webhook_handler.sh'])
if result.returncode:
logging.warning(f'Handler exited with non-zero exit code {result.returncode}')
time.sleep(10)
handler_thread = HandlerThread(daemon=True)
@bottle.route('/webhook', method='POST')
def webhook():
handler_thread.trigger.set()
if __name__ == '__main__':
handler_thread.start()
bottle.run(host='127.0.0.1', port=8433)

View file

@ -0,0 +1,10 @@
[Unit]
Description=Netbox Webhook Handler
After=network.target
[Service]
ExecStart=/usr/local/sbin/netbox-webhook-handler
[Install]
WantedBy=multi-user.target

6
handlers/main.yml Normal file
View file

@ -0,0 +1,6 @@
- name: restart netbox-webhook-handler
service:
name: netbox-webhook-handler
enabled: True
daemon_reload: True
state: restarted

31
tasks/main.yml Normal file
View file

@ -0,0 +1,31 @@
- name: install dependencies
apt:
pkg:
- python3-bottle
- name: Copy netbox webhook handler script
notify: restart netbox-webhook-handler
copy:
content: '{{ netbox_webhook_handler_script }}'
dest: /etc/netbox_webhook_handler.sh
owner: root
group: root
mode: 0750
- name: Copy netbox-webhook-handler
notify: restart netbox-webhook-handler
copy:
src: netbox-webhook-handler
dest: /usr/local/sbin/netbox-webhook-handler
owner: root
group: root
mode: 0755
- name: Copy systemd service file
notify: restart netbox-webhook-handler
copy:
src: netbox-webhook-handler.service
dest: /etc/systemd/system
owner: root
group: root
mode: 0644