A set of python scripts and an AWS Lambda function that leverages a python module that can synchronize data between Netbox and the Meraki Dashboard.
Python requimrents are contained in requirements.txt:
pip install -r requirements.txt
You Netbox deployment must be configred with the following tags and custom fields:
Tags:
discovered
Custom Fields:
- last_used: date
- mac: string
NETBOX_URL: URL of the Netbox instanceNETBOX_TOKEN: Netbox API TokenMERAKI_ORG_ID: Meraki ORG IdMERAKI_DASHBOARD_API_KEY: Meraki API TOKENMERAKI_TIMESPAN: Timespan for the IP Address search
This repo contains a module (meraki-netbox) along with scripts that leverage the functions in that module. It also contains an AWS Lambda function that can call different functionality from the module depending on the event that the Lambda fucntion receives.
discover_meraki_clients.py
Description:
This script iterates through the specified organization's networks looking for networks with the discover-clients tag. When it finds such a network, it iterates through all of the hosts in that network. For each host, it either adds it to IP Addresses if it does not exist or updates it if it does exist. In both cases, it updates the last_used and mac fields. When it adds a host, it also adds a discovered tag to keep track of the hosts that were added through the discovery process.
A number of default make targets are provided. You can run make help to get a short summary of each.
Useful targets:
make check: runsyapfandpylintto check formatting and code correctness. A.pylintrcis provided with some defaults to make it a little less picky.make docs: build documentation in HTML and Markdown. By default, it will automatically generate API documentation for everyting inmyproject. Output documents can be found indocs/build.make clean: cleans up generated binaries, virtualenvs, and documentationmake lambda-layer: Creates a layer for the dependancied inrequirements.txtand pushes to AWS Lambdamake lambda-deploy: Packages the function and pushed to AWS Lambda
Note: See Contributing for guideline to use when contributing to this project