Initial commit
This commit is contained in:
commit
f381aedff5
4 changed files with 83 additions and 0 deletions
36
files/netbox-webhook-handler
Executable file
36
files/netbox-webhook-handler
Executable 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)
|
||||||
10
files/netbox-webhook-handler.service
Normal file
10
files/netbox-webhook-handler.service
Normal 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
6
handlers/main.yml
Normal 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
31
tasks/main.yml
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue