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